fus propi
sprites
Cóciícjcj
má^ui
e y síe i
des
@®
BASIC MSX
mparado
n Spectrum y
ommodore 64
i • ••• '
(Vi SOO \¡M£ 69500/^)
SYSTEM
Ordenador Personal
TOSHIBA HX 10
Su Ordenado Servidor
69500 ptas _
Características principales:
Sistema standard MSX. Memoria de 64 K
RAM, 32 K ROM y 1 6 K de pantalla. 1 6 co-
lores. 73 teclas. 32 sprites. Sistema mul-
ticolor 64 x 48 bloques. Sonido: 8 octa-
vas tres acordes. Conexiones para: casette,
presora, 2 mandos y futuras expansiones.
3TOSHIBA
^™ española de microordenadores s.a.
CabaHero. 79 Te* 321 02 12 Tetex 97087 EMOS 08014 BARCELONA
ersalmente que permite disponer de una gran variedad de programas y accesorios compatibles entre sí.
ANO I - Núm. 5
Septiembre 1985
Parece que fue ayer cuando empeza-
ron las vacaciones. Ahora el verano se
acaba, y con él se inicia una nueva etapa,
la del curso escolar. Las noticias, algo
paralizadas desde el comienzo de la épo-
ca estival, vuelven a surgir; nuevos jue-
gos, libros, etc., prometen afianzar un
poco más el estándar MSX en un merca-
do en que el ordenador personal se está
convirtiendo en máquina indispensable a
cualquier nivel.
A puertas de importantes ferias de in-
formática, el estándar sigue sumando
puntos.
4
COMANDOS DE E/S DEL MSX. Instruc-
ciones completas para el buen manejo de
los datos.
12
NOTICIAS, libros, software, etc., nove
dades interesantes e importantes.
14
SOFTWARE I a actualidad dpi mprradn
sometida a crítica: Generador de Sprites,
Panic Junctio, OThelo y Contabilidad Do-
méstica.
20
COMPARATIVA ENTRE LOS BASICs
DE LOS ORDENADORES MAS POPU-
LARES. Interesante análisis de los Ipnnua-
jes de programación del ZX Spectrum y el
Commodore 64, rivales del MSX.
30
SPRITES MSX. Desvelamos el misterio de
la creación de dibujos animados por orde-
nador.
36
ALGEBRA DE BOOLE. Se introduce al
lector a una de las ramas matemáticas que
más afecta a los ordenadores, desde el di-
seño de circuitos digitales (hardware) hasta
la planificación correcta de sentencias IF
(software).
40
PROGRAMA. Algebra de Boole.
42
PROGRAMA. Los visitantes.
51
PROGRAMA. La pianola
54
TRUCOS. Nuevos trucos para aplicarlos al
ordenador y a los programas. ¡Esperamos
los tuyos!
56
CODIGO MAQUINA. Continuamos revé
lando los importantes secretos escondidos
dentro del MSX.
64
BUSY. Nuestra mascota se presenta ante
vosotros.
65
RINCON DEL LECTOR. Para solucionar
todos vuestros problemas.
MSX 3
^\ entro de los diferentes coman-
A idos que presenta el BASIC
J iMSX se pueden hacer varios
bloques dependiendo de la
función general que desempeñan,
así por ejemplo podemos distinguir
comandos de cálculo como pueden
ser todas las funciones matemáticas,
funciones lógicas y demás, coman-
dos de comunicación del ordenador
con el ámbito exterior, es decir los
periféricos, que podemos agrupar
genéricamente como comandos en-
trada-salida o abreviadamente co-
mandos E/S, etc.
En este artículo nos vamos a cen-
trar en este último tipo, es decir los
comandos E/S.
Agrupar los comandos BASIC en
un solo bloque, aparte de ser algo
pretencioso, sólo nos puede servir
de base para tratarlos más profunda-
mente y así, a la hora de estudiarlos
debemos subdividirlos en varios
apartados si no queremos caer en la
trampa de la superficialidad.
4 M8X
En un principio, los comandos a
tratar los vamos a agrupar en los si-
guientes apartados:
a) Comandos relacionados con el
almacenamiento digital, bien sea en
disco o en cinta magnética, con ins-
trucciones relacionadas. En este
apartado vamos a tratar los coman-
dos: BLOAD, BSAVE, CLOAD.CSA-
VE, LOAD, SAVE, MERGE, MOTOR,
EOF.
b) Comandos que introducen da-
tos en el ordenador por los diversos
ports que éste posea, bien por tecla-
do u otras posibles entradas, sin
contar el port del joystick.
Los comandos a tratar son: INPUT,
INPUT , INPUT$ , LINE, INOUT,
READ. INKEY$, INKEY, INKEY .
c) Comandos que envían informa-
ción del ordenador a los periféricos
por los distintos ports de salida, des-
de las señales que se envían al tele-
visor hasta la más sofisticada impre-
sora.
Los comandos a tratar son: LIST,
LLIST, PRINT, LPRINT, USING, PRINT
Una vez introducidos todos los co-
mandos que vamos a tratar vamos a
ir analizando poco a poco por gru-
pos, intentando dejar claro su funcio-
namiento donde ejercer lo explica-
do.
Comandos de E/S de
datos para soportes
magnéticos
Tanto los diskettes como las cintas
de cassette, se basan en el almace-
namiento magnético de datos. Aun-
que sea innecesario entrar en deta-
lles sobre el tema, podemos decir
que todos ellos aprovechan la sus-
ceptibilidad magnética de metales o
aleaciones que hace que la llegada de
datos modifiquen su estado perma-
nentemente, de forma que al intentar
volver a leer el dato es posible recu-
perarlo.
Para entender un poco mejor ésto,
\
n el MSX
supongamos una serie de partículas
magnéticas alineadas a las que des-
plazamos uniformemente. Si en un
momento dado introducimos un cam-
po magnético, una perturbación, mo-
dificaremos el estado de alguna de
las partículas. Esta modificación pue-
de ser por ejemplo el cambio de la
orientación de la partícula.
Si posteriormente intentamos ver
la disposición de las partículas po-
dremos ver que al llegar a esa partí-
cula influenciada existe un cambio
en la disposición respecto a las de-
más. Esto podría indicar cambio de
información. Como sabemos, en cir-
Una completa
gama de
instrucciones de
lectura y
grabación de
datos, permiten el
acceso a la
información.
r fAQV\ COfA hNDO BUJ/-X2
JSW/ HASTA LOS Cü£KNO$' )
* J CAMb \o.J '
El BASIC MSX es un potente lenguaje
compuesto de numerosas instrucciones que
convierte las operaciones más complicadas en
algo muy sencillo. Esto se debe a que posee
comandos específicos para cada acción, lo que
simplifica y facilita bastante su programación.
Sería tarea engorrosa describir las instrucciones
que pertenecen a este lenguaje, pero es algo
que hay que hacer si se desea profundizar en
las inmensas posibilidades de este estándar.
cuitos lógicos o digitales, la informa-
ción puede ser de dos tipos, positiva
(1), o negativa (0), es decir, todo o
nada.
Cuando se de un cambio en la in-
formación, se podrá entender que ha
habido una alteración en la disposi-
ción de las partículas de información.
Este es el principio del almacena-
miento digital. La diferencia entre el
disco y la cita no reside en ésto, sino
en la forma en que se graban y recu-
pera los datos, asi, mientras que en
la cinta el almacenamiento es se-
cuencial, es decir, un bloque de da-
tos se almacena a continuación del
anterior, en un disco es totalmente
aleatorio, pudiendo darse que el blo-
que de datos almacenados previa-
mente, estén detrás de otros almace-
nados posteriormente.
Además, la diferencia podemos
observarla cuando queremos recu-
perar los datos, ya que mientras que
en una cinta hemos de leer todos los
bloques de información anteriores
para acceder a uno en concreto, en
el disco, sólo debe leer en el directo-
rio los sectores donde están almace-
nados los datos y dirigirse a él.
Las instrucciones comprendidas
en este apartado ayudan al manejo
de esta posibilidad de almacena-
miento digital que los ordenadores
poseen. No obstante, no vamos a
entrar en protocolos, sino que habla-
remos de las instrucciones genéricas
utilizadas tanto en el almacenamien-
to eh disco como en cinta.
Para entrar en situación, bueno es
recordar que la información que que-
remos almacenar y recuperar pode-
mos dividirla en dos tipos, bytes, y
programas. Aunque en un plano más
profundo es lo mismo, ya que todo
son bytes, podemos dividirlos así de
cada a nuestro uso y a las diferentes
instrucciones que hay para uno u
otro tipo.
Es fundamental, que no quede en
el aire la diferencia entre los dos ti-
pos, podemos decir, que bytes se-
MSX 5
FOTO 1;
La información y los datos, se pueden almacenar de las maneras más diversas,
desde el cassette hasta el disco compacto, pasando por las cintas de video.
rán tablas de datos, subrutinas e có-
digo máquina, etc., mientras que un
programa es lo más usual que se al-
macena, aunque como veremos más
adelante tiene sus matices.
BLOAD y BSAVE, dos
comandos para tratar
los bits y bytes
Vamos a tratar en un principio, por
su mayor simplicidad el almacena-
miento y recuperaión de bytes.
Normalmente, cuando queremos
salvar una parte de la memoria del
ordenador, utilizamos el comando
BSAVE. Pero hay que tener en cuen-
ta que al no tener estructura BASIC,
el ordenador no entenderá a partir de
que posición tiene que empezar a al-
macenar, ni hasta que posición tiene
que hacerlo, por lo que debemos es-
pecificarle en el comando BSAVE las
direcciones de comienzo y final de
esto.
Si estamos salvando código má-
quina, tenemos además la opción de
poder especificar la dirección de en-
trada a la subrutina, a partir de la cual
se ejecutará esta.
Por ejemplo, supongamos que te-
nemos una rutina en código máquina
que ocupa 40 bytes a partir de la di-
rección 39000, cuyo nombre es 'cm'
y la dirección de autoejecución es
39010 y una tabla de datos que por
comodidad la almacenaremos a par-
tir de la dirección 40000 y que ocupa
1540 bytes.
Si queremos almacenar esta confi-
guración de memoria tenemos dos
opciones:
Opción 1). Salvar por separado
ambas partes con las siguientes ins-
trucciones:
La rutina en C.M.:
BSAVE "CAS:CM", 39000, 39040,
39010
y la tabla de datos (suponemos que
se llama T):
BSAVE "CAST:T", 4000, 41540
Opción 2). Salvar ambos ficheros
juntos como uno solo dada su proxi-
midad en memoria, siempre y cuan-
do se utilize conjuntamente la rutina
y la tabla. Este método ocupa algo
más de cinta en el cassette (evitán-
donos las cabeceras, etc), pero el
sistema queda mucho más compac-
to.
Lógicamente, si la rutina no se utili-
za con la misma asiduidad que la ta-
bla, será mejor utilizar el sistema an-
terior que es más general. En esta
opción, el comando a utilizar es:
BSAVE "CAS:CM", 39000, 41540,
39010
asumiendo que llamamos al bloque
'cm'.
En principio esta sería la disposi-
ción típica para almacenar bytes.
Ahora podemos empezar a matizar
varias cosas.
Por ejemplo, antes del nombre de
rutina o de la tabla hemos puesto
CAS:. Esto significa dónde se va a
direccionar el almacenamiento, es
decir, en este caso, vamos a almace-
narlo en cassette, por ello ponemos
CAS:. Si queremos almacenarlo en
disco, pondremos A: o B; depen-
diendo de la unidad que utlicemos.
Si a la hora de escribir el comando
se nos olvida algún parámetro reque-
rido (a excepción de la dirección de
autoejecución, que es opcional), ten-
dremos un típico informe de error de
MISSING OPERAND o un clásico y
desesperanzador SINTAX ERROR.
Se da overflow cuando alguno de
los parámetros tenga un valor supe-
rior a 65535.
Las direcciones se pueden especi-
ficar en hexadecimal, para ello usare-
mos el prefijo '&H' situado delante
del número.
Si durante la grabación ocurre algo
extraño que nos impida seguir con la
grabación, es posible interrumpirla
con CTRL-STOP, dándonos, por un
lado el informe DEVICE I/0 ERROR y
por otro el problema de tener que
volver a empezar.
Hemos dicho que las subrutinas
tienen varios parámetros que se de-
ben especificar, la dirección inicial, la
dirección final y la de autoejecución.
Cada una de estas se almacena en
una varible con los fines que a cada
ua compite. Estas son, SAVENT
(FCBF) para almacenar la dirección
incial, SAVEND (F87D) que almace-
na la dirección final. La dirección de
autoejecución, si existe se guardará
en la variable que almacena la direc-
ción inicial.
En el periférico (disco o cinta) que-
da almacenada la direcció inicial de
la subrutina (en forma de dos bytes,
6 MSX
Programas en
BASIC, Código
Máquina o
ficheros grabados
en ASCII, se
tratan y manejan
sin reparos.
la dirección final de la subrutina
(igualmente en dos bytes y los dos
bytes de autoejecución de la rutina,
seguidos del contenido de la RAM
que queremos almacenar.
Como los ordenadores MSX po-
seen Z-80, las direcciones están al-
macenadas en forma de dos bytes
con el byte menos significativo pri-
mero. Lo que significa que si quere-
mos almacenar la dirección &H4082
(en decimal 16514), esto se hará de
forma que el valor 82 se guarde en el
primero y 40 en el segundo.
Una vez tengamos el bloque sal-
vado, habrá que tener en cuenta la
posiblidad de volver a utilizarlo en fu-
turas ocasiones. Por esta razón, nos
plantearemos el problema de pasarlo
de la cinta o el disco al ordenador.
Para que no tengamos muchos que-
braderos de cabeza podemos decir
que todo lo que se almacena con la
instrucción BSAVE , se puede recu
perar con BLOAD. Esta es el coman-
do que tienen los ordenadores para
recuperar bloques de información,
como es el código máquina o tablas
de datos, ostos cuando no están en
forma de variables dimensionadas.
La sintáxis de esta instrucción es
en todo momento similar a la de
BSAVE, aunque en muchos casos
no sea necesario especificar algunos
parámetros.
Así para el ejemplo anterior de la
rutina y la tabla, si deseáramos recu-
perarlos, introduciríamos la siguiente
instrucción:
BLOAD "CAS:CM", R
siendo R, la inicial de la instrucción
RUN, para que de esta forma se au-
toejecute. Esta es totalmente opcio-
nal, es decir, que sino se incluye, la
rutina no se ejecutará hasta que no-
sotros no la llamemos externamente
(principalmente con CALL). No obs-
tate, en vez de R podemos introducir
una expresión numérica (bien un nú-
mero como tal o una variable que po-
sea un valor adecuado) como direc-
ción de autoejecución.
El funcionamiento es muy simple,
lee un bloque binario inicial que lo to-
mará como el nombre del programa
y comprobará si es el mismo que se
ha indicado en el comando. Si al te-
clear la instrucción BLOAD, hemos
omitido el nombre, es decir, hemos
introducido simplemente el comando
BLOAD "CAS:", se cargará el primer
programa disponible en la cinta.
Si especificamos nombre de blo-
que (o fichero), buscará ese progra-
ma. Si el que encuentra no es el soli-
citado aparece el mensaje SKIP
"nombre del programa", mientras que
si encuentra el programa deseado,
aparecerá el mensaje FOUND "nom-
bre del programa".
El nombre cuando se trata de car-
gar de cassette debe ser de 6 carac-
teres, el primero de los cuales debe
ser alfabético. En disco se permiten
hasta 8 caracteres, aunque pode-
mos introducir hasta 11 caracteres,
pero después del octavo se colocará
un punto y quedarán los tres últimos
caracteres como descripción del ar-
chivo, este indicará si el programa en
cuestión está grabado en formato
ASCII (.ASO"), está en BASIC (".BA-
SIC"), o es de cualquier otro formato
que nosotros deseemos.
A partir del carácter 12, cualquier
elemento que aparezca, no se tendrá
en cuenta.
Una vez que se ha encontrado el
bloque y reconocido, se introduce di-
rectamente a la zona de memoria de-
seada. Puede haber un error de over-
flow, cuando algún parámetro sea
mayor de 65535.
La velocidad de E/S de
información, manejable
desde una instrucción
Otra caraterística a tener en cuen-
ta cuanto grabamos programas, es
la posibilidad de hacerlo con dos ve-
locidades distintas.
Pues bien, los ordenadores MSX
tienen dos velocidades de carga
cuando trabajan con cassette, 1200
y 2440 baudios. Para entender mejor
esto, vamos a definir que es un bau-
dio, ya que sino quedará muy ambi-
guo. Sabemos que los ordenadores,
los datos se almacenan en forma
binaria y que en esta notación sólo
Cartucho del interface
RS232C
Adaptador acústico
impresora de puntos
Impresora plotter
Televisión
unidad de floppy disk
FOTO 2;
Configuración típica de un sistema MSX, donde todos los periféricos se conjuntan para formar una auténtica estación de trabajo.
MSX 7
hay dos signos, es decir, al transmitir
los datos sólo debemos dar dos im-
pulsos diferentes arbitrarios que co-
rrespondan a esos símbolos.
En transmisión de datos, un bau-
dio es una de estas informaciones a
transmitir, es decir, un (1) ó (0).
Luego decir que un MSX tiene una
velocidad de transmisión de datos
vía cassette de 1200 baudios supo-
ner decir que transmite 1 200 unos o
ceros por segundo. Con esta defini-
ción puede quedar clara para cual-
quier persona. Para los muy puristas,
diremos que los datos se almacenan
en bytes que están constituidos por
ocho bits, y que la velocidad en bau-
dios corresponde al número de bits
(no de bytes) que se transmiten por
segundo.
Podemos decir que cuando el or-
denador manda datos a un cassette,
lo hace vía moduladores FSK con
contadores variables (dos velocida-
des). Estos moduladores se encar-
gan de modificar la salida del ordena-
dor hacia un periférico que es
bastante más lento que el ordena-
dor. Son algo así, como buffers, zo-
nas intermedias, que son capaces
de adaptar señales.
Bién, ya sabemos que los MSX
pueden transmitir datos a dos veloci-
dades diferentes cuando trabajan
con cassette (con discos, esta dife-
renciación no tiene sentido, ya que
los canales de salida son distintos).
Ahora nos preguntaremos como
decir al ordenador que trabaje en
una u otra velocidad, lo cierto es que
decirle que trabaje en la velocidad
más lenta es fácil, no hay que indi-
carle nada, puesto que el valor por
defecto es 1200.
No obstante, existen instrucciones
que colocan el contador del modula-
dor FSK a velocidad baja, porque en
los MSX no falta de nada.
Existen varias formas de alterar la
velocidad, ahora sólo vamos a expli-
car una, para después, al explicar los
demás comandos de entrada/salida
de datos podemos ir introduciendo
otras formas.
Una manera cómoda de hacer
esta modificación es utilizar el co-
mando SCREEN. La utilización nor-
mal de este comando es algo más
compleja de lo que normalmente se
La velocidad de
grabación, así
como el motor del
cassette, se
pueden controlar
directamente.
utiliza. Así, dentro de este comando
es posible definir cinco parámetros
que van a delimitar varios modos de
operación para la pantalla, los spri-
tes, el cassette, el teclado y la impre-
sora.
El formato general de la instruc-
ción es:
SCREEN (MODO PANTALLA),
(TAMAÑO SPRITE), (SONIDO
TECLADO),
(VELOCIDAD CASSETTE),
(OPCION DE IMPRESORA)
Son cinco parámetros que en la
mayoría de los casos no se utilizan
conjuntamente, pero todos son im-
prescindibles. El modo de pantalla se
refiere a las cuatro posibilidades que
MSX permiten de representación. El
tamaño de sprite corresponde tam-
bién a las cuatro posibilidades que
tiene para definirlos.
No son el objeto del artículo por lo
que no encontraremos en detalle, ya
que son materia de mucha discu-
sión.
En cuanto ai sonido del teclado,
se refiere al click que se oye, si el
volumen de TV. lo permite, de forma
que es posible inhibirlo con 0 o acti-
varlo con algún valor distinto de cero.
Ahora vamos a pasar por alto la
velocidad de cassette, para tratarlo
como plato fuerte de esta descrip-
ción en el comando SCREEN, vea-
mos ahora la forma en que se usa la
impresora.
Tomando una postura egocentris-
ta, podemos dividir a las impresoras
en dos grupos: las compatibles con
MSX y las que no lo son. En las com-
patibles con MSX, los caracteres grá-
ficos coinciden con los del ordena-
dor, por lo que al decirle que imprima
un carácter gráfico deseado, lo hará
bien. Por el contrario, si el juego de
caracteres gráficos no coincide, al in-
dicarle que imprima un carácter gráfi-
co, no lo hará como es de esperar.
Para evitar esto, con el comando
SCREEN se puede indicar al ordena-
dor si la impresora que conectamos
es compatible o no con el ordena-
dor. Si no indicamos nada, la máqui-
na da por supuesto que lo es y listará
los caracteres gráficos que desee-
mos, mientras que si indicamos, que
no es compatibles cuando aparezca
un carácter gráfico, mandará un es-
pacio. Para seleccionar esta opción
pondremos un 0 (impresora compati-
ble MSX), mientras que si no lo es,
pondremos un valor distinto.
Lógicamente, si sólo se quiere mo-
dificar uno de los parámetros dejan-
do fijos los demás, sólo hay que po-
ner éste pero respetando las comas,
es decir, supongamos que quere-
FOTO 3;
El cassette es el soporte más utilizado y
la manera más barata de almacenar y
recuperar la información.
mos trabajar con sonido en el tecla-
do, pondremos:
SCREEN „1
si por el contrario queremos trabajar
con una impresora de caracteres
gráficos distintos a los de MSX, intro-
duciremos:
SCREEN „„1
Una vez situados en el tema y
como explicación final del comando
SCREEN, explicaremos de cómo se
puede alterar la velocidad de trans-
misión.
En realidad es tan simple que como
han sido los demás parámetros vis-
tos en esta situación. Así, si pone-
mos en el sitio correspodiente 0, la
velocidad seleccionada será de 1 200
baudios, mientras que si lo que po-
nemos es 1, habremos selccionado
la velocidad superior, de 2400 bau-
dios. Igual que antes, si sólo quere-
mos modificar la velocidad, dejando
8 MSX
todos los parámetros fijos, podemos
introducir la siguiente instrucción:
SCREEN „,1
y habremos puesto la velocidad a
2400 baudios.
Como nota final, el valor por de-
fecto en la transmisión de datos es
1200 baudios.
CLOAD y CSAVE,
aplicable sólo
al cassette
Vamos a seguir utilizando coman-
dos en orden creciente de compleji-
dad. Ahora le toca el turno a CLOAD
y a CSAVE. Se utiliza básicamente
en la grabación y recuperación de
datos y programas en cassette sola-
mente, mientras que los comandos
BLOAD y BSAVE, permiten elegir el
tipo de periférico.
En un principio, vamos a salvar
programas con CSAVE. La sintáxis de
la instrucción es:
CSAVE "(NOMBRE)", VELOCI-
DAD
Como podemos ver, aquí también
tenemos otra de las muchas posibili-
dades anunciadas anteriormente
para modificar la velocidad de trans-
misión de datos. Funciona a nivel de
parámetros igual que en SCREEN,
de forma que si ponemos 1 , habre-
mos seleccionado la velocidad de
1200 baudios, mientras que si pone-
mos 2, habremos selccionado 2400.
Recordaremos que antes los pará-
metros eran 0 o para 1200 y cual-
quier otro valor distinto de 0 para ele-
gir 2400.
La mayoría de los usuarios se pre-
guntará, ¿porqué no cambiar la velo-
cidad y grabar siempre a 2400 bau-
dios?, puesto que al ser el doble se
hará con más rapidez.
Este razonamiento es bueno,
siempre y cuando el cassette que uti-
lizemos este en condiciones, por el
contrario, si graba mal lo cual no es
nada difícil, podemos tener serios
problemas para cargar y grabar pro-
gramas. Por este motivo, se requiere
un buen aparato o aunque sea me-
diocre, que esté en óptimas condi-
ciones.
Significa esto, que la velocidad
más alta habrá de evitarla y así tam-
bién evitaremos problemas típicos en
estos casos.
Una vez visto el problema que
plantea semejante elección, especifi-
caremos las condiciones que debe
tener la sentencia para que funcione
perfectamente. En un principio, el
nombre que le demos al programa,
debe tener como máximo 6 caracte-
res. Si tiene más, sólo tomará los
seis primeros. Tendremos problemas
con informes de error si no ponemos
bien el nombre, las comillas, o un va-
lor que no sea i el 1 ni el 2, en la
opción de la velocidad.
Al empezar a grabar, hay un espa-
cio de seis segundos en los cuales
TOSHIBA
■
n
A
□
n
L A
FOTO 4;
Los diskettes se convertirán en breve
plaza, junto con el cassette, en dos
elementos imprescindibles para llevar un
total control de los datos.
hay un silencio, y no es efectivo el
CTRL-STOP.
Posteriormente si lo es, pero debe-
remos empezar de nuevo si quere-
mos guardar la información.
Una advertencia que a muchas
personas les parecerá tonta pero
que ocurre más de una vez, es que no
hay que olvidarse de pulsar RE-
CORD en el cassette, ya que si no,
lo que habremos hecho ha sido per-
der el tiempo.
El comando siguiente CLOAD, tie-
ne algunos matices más que CSA-
VE, ya que sirve para varias cosas.
Como es fácil de imaginar, CLOAD,
sirve en principio, para cargar desde
cassette o programa que hemos sal-
vado con CSAVE. La sintáxis general
de la instrucción es:
CLOAD (?) "(nombre)"
Si empezamos por partes, vemos
que es posible poner el signo (?),
que va a indicar al ordenador que
debe verificar o revisar el programa
que se ha salvado con CSAVE. Esta
instrucción consiste en comparar el
programa que hay en memoria, con
el que se acaba de grabar en casset-
te. Si hay algún error nos los comuni-
cará mediante el correspondiente
mensaje. A continuación tomaremos
las medidas oportunas y que en la
mayoría de los casos será la de vol-
ver a grabar el programa de nuevo.,
así hasta que funcione correctamen-
te.
En cuanto a la selección de la ve-
locidad, aquí no hay problema ya que
el ordenador sabe a que velocidad
se está grabado y automáticamente
la selecciona a la hora de leer los
datos.
El nombre del programa es opcio-
nal en esta instrucción si se omite car-
gará el primer programa que encuen-
tre, mientras que si especificamos
alguno en concreto, empezará a
buscarlo, si encuentra uno que no es
el requerido, aparecerá el informe de
SKIP y cuando lo encuentre, apare-
cerá el de FOUND, cargándose o ve-
rificándo, según lo que desee.
Lo primero que encuentra el orde-
nador es el encabezamiento, siendo
este de diez bytes. En él se indican
las características de lo que hay a
continuación, tanto el nombre como
las instrucciones del programa.
Una vez que ha encontrado el pro-
grama que se busca, el ordenador
hace un NEW con lo que todo lo que
hubiese en memoria por debajo del
RAMTOP se borra. Si queremos con-
juntar dos programas, podríamos uti-
lizar la instrucción MERGE, pero con
programas salvados con CSAVE,
esto no es posible. Más adelante ve-
remos la forma de hacer esto.
La única precaución a tener en
cuenta con programas grabados con
el comando CSAVE, es que deben
cargar con la instrucción CLOAD. El
motivo lo veremos más adelante.
Antes vamos a introducir una nue-
va instrucción, que aunque propia-
mente dicha, no es un comando de
entrada/salida como las anteriores,
envía una señal al exterior. Nos referi-
mos al comando MOTOR, cuya sin-
táxis es:
MSX 9
Este permite controlar el motor de
un cassette, lo que nos da un control
absoluto sobre la máquina. Esto es
posible, gracias a un conector que
MOTOR (ON) (OFF)
tiene al lado de la entrada MIC. Esa
conexión más pequeña, es decir, ac-
túa como un interruptor.
De esta maneras, si queremos que
el motor empiece a funcionar, pon-
dremos MOTOR ON y cuando quera-
mos paralo, haremos MOTOR OFF.
A primera vista puede parecer
poco útil, ya que también estamos
nosotros para dar a la tecla de PLAY,
pero cuando desde un programa ne-
cesita salvar o cargar datos, es muy
cómodo despreocuparse de contro-
lar el cassette, cuando lo puede reali-
zar el ordenador por nosotros.
Grabar o leer en
cassette o
diskette es
operación que se
efectúa, de una
manera sencilla y
sin
complicaciones.
Además, otro posible uso, que a
más de uno se le ocurrirá es el de ha-
cer avanzar la cinta hasta una posi-
ción determinada y cargar o grabar el
programa deseado.
Vamos, entonces a tratar las últi-
mas instrucciones que podemos
agrupar en este apartado, que son
LOAD y SAVE.
Cuando almacenamos un progra-
ma BASIC, tenemos varias posibilida-
des de hacerlo:
a) En forma de bytes, para lo cual
utilizaremos el comando BSAVE, per-
diendo la estructura que da el BASIC.
Este método no es aconsejable para
los pocos experimentados en la dis-
posición interna de la memoria en los
MSX.
b) En forma de programa de to-
kens. Es lo más normal y la que de
hecho se utiliza cuando se almacena
con CSAVE. No obstante, lo primero
será explicar que es un token.
El ordenador, en su ROM, adigna
a cada comando un número y éste
es el que se almacena cuando se uti-
liza dicho comando, es decir, por
ejemplo, para un comando PRINT, la
máquina le asigna un valor numérico
que se grabará con la instrucción.
c)En formato ASCII, es decir, en lu-
gar de grabarlo como números que
corresponden a instrucciones, se
grabarán los caracteres que forman
la instrucción PRINT, incluyendo los
espacios en blanco.
Esto, en principio indicaría que
con este sistema ocuparía más cinta
de cassette, pero es la única forma
de poder utilizar el comando MER-
GE.
Se utiliza el comando MERGE se
desea unir dos programas BASIC, sin
perder ninguno. Lógicamente se su-
perponen y cuando en los dos pro-
gramas aparecen dos líneas iguales,
permanece la que se ha cargado en
segundo lugar.
La sintáxis de la instrucción es:
MERGE "(PERIFERICO: NOM-
BRE DEL SEGUNDO PRO-
GRAMA)"
Es decir, para poder utilizar este
comando, deberemos tener en memo-
ria un programa BASIC al que quera-
mos unir otro. Pulsaremos MERGE
"cas:(nombre)" t aunque el nombre es
opcional.
Hacemos hincapié en la caracterís-
tica de que para ser cargado, antes
tendrá que haberse cargado con el
formato del código ASCII, de lo con-
trario esta instrucción no tendrá efec-
to alguno.
Una vez introducidos todos los
matices, podemos dedicarnos a las
funciones SAVE y LOAD. La sintáxis
es como en los demás casos:
SAVE "(PERIFERICO: NOM-
BRE)
Para salvar un programa, aunque
hayamos puesto el periférico, esto
no afectará la ejecución ya que sólo
es posible poner como nombre de
periférico el de CAS:.
Ahora bien, si lo que deseamos es
cargar un programa, inroduciremos
el siguiente comando:
LOAD "PERIFERICO: (NOM-
BRE)", (R)
donde los parámetros introducidos
entre paréntesis, son opcionales y de
éstos, sólo la R es digna de men-
ción, ya que el omitir el nombre es ya
una práctica común, no sólo por par-
te de nuestros lectores, nosotros
también lo hacemos, El poner la R al
final de la instrucción, no es más que
para ejecutar el programa directa-
mente, es una forma de autoejecu-
ción.
Hay que tener cuidado de no in-
tentar cargar bytes con LOAD, ya
que estaremos perdiendo el tiempo,
esta función debemos hacerla con la
instrucción BLOAD.
Si tenemos disponible la unidad de
disco, las cosas pueden variar un
poco, ya que si queremos sacar o
cargar un programa en un unidad, no
tenemos más que escribir:
SAVE "(NOMBRE)", para salvar
y
LOAD "(NOMBRE]", para car-
gar, aunque estas instruccio-
nes caen dentro del MSX-
DOS, que no es el objeto de
este artículo.
Existen también matices que po-
demos añadir cuando trabajamos
con ficheros, pero no se van a tratar
aquí, Entre estos, tenemos la posibili-
dad de cerrar los ficheros con CRTL-
Z en lugar de utilizar EOF, ect.
Aquí finaliza esta extensa introduc-
ción a los comandos E/S más popu-
lares, Hemos intentado dar una idea
clara de unos domandos importantes
dentro de la gestión de entrada/
salida de los MSX, como es el alma-
cenamiento y recuperación de datos
principalmente vía cassette, que es
el medio más asequible de hacerlo.
Aquellos que posean la unidad de
diskette podrán aplicar todos estos
comandos con pocas variaciones a
su medio de almacenamiento. De
cualquier manera, con este artículo,
estamos seguros de cubrir un pe-
queño camino en el largo recorrido
que tiene por delante el BASIC del
MSX.
10 MSX
TE AYUDAMOS
EMPEZAR.
Consigue tu
"VALUE PAK".
que incluye:
- Unidad SVI 328
- Magnetófono SVI 904
- Joystick "QUICKSHOT I" SVI 10
- Diez programas en cassette
Te ofrecemos una oferta sin precedentes: el 'Valué Pak* Ahora puedes conseguir el|
ordenador SPECIRAVIUKj SVI ó'Sü. con teclado profesional. 3? K ROM. 80 K RAM. 16
colores alta resolución, sonido junto con el DATA CASSEflí . un joystick 'Quickshot
de alta sensibilidad, lü programas, por menos
de la tercera parte de su valor
Y es que queremos que entres en el mundo de
la informática a lo grande, por un precio
pequeño
Y que tengas un equipo que vaya creciendo a
la medida de tus conocimientos Porque el
SVI-328. gracias al SUPERE X PANDE R. puede
convertirse en un equipo altamente profesional
(hasta dos unidades de disco. Interface
Impresora, cuatro Slots para cartuchos de
expansión, etc.) con Sistema Operativo CP/M. y la fadlIQUU. de emplear urSd
amplia variedad de lenguajes COBOL. FORTRAN. ENSAMBLADOR. PASCAl . MBASIC. etc
Y además el ordenador SPECTRAVIDEO SVI-328 es opcionalmente
compatible con el standard internacional MSX
Ahora o nunca.
Spectravideo. La informática del futuro, hoy
Concurso programación Sony
t 21
La iniciativa de Sony debería ser
un ejemplo a seguir por los diver-
sos fabricante. El primer concurso
de programación, organizado por
ellos, cuenta con muchos alicien-
tes, entre los que está el premio al
ganador que será 500.000 pts.
El concurso está dividido en dos
categorías; la primera es para Es-
cuelas y la segunda para usua-
rios.
En el primer caso, podrán parti-
cipar estudiantes y el tema a de-
sarrollar será didáctico. El premio
será de 1.000.000 pts., repartidos
equitativamente por la escuela y el
ganador.
En el segundo caso, participa-
rán los usuarios del sistema, que
podrán desarrollar un programa
basado en cualquier tema.
Esta categoría, se caracteriza
por los premios, ya que éstos va-
rían, puesto que el ganador se em-
bolsará, la nada despreciable can-
tidad de 500.000 pts. Se repartirán
además, 10 premios de 100.000
pts., y habrá premios de consola-
ción para todo el que participe.
La preocupación por el tema de
la informática es manifiesta, para
ello, darán clases de la materia a
todos aquellos profesores que de-
seen asistir a ellas.
Expreso de Oriente
No podía faltar en esta sección, donde
este mes las noticias son bastantes inte-
resantes.
El mercado japonés de ordenadores
MSX no hace más que crecer y crecer.
Nuevos ordenadores se están presentan-
do casi continuamente y las aplicaciones
de estos ordenadores empieza a hacerse
notar.
Para empezar, el desarrollo tecnológi-
co nipón tiene una meta: Europa.
Parece ser, que el viejo continente está
en el punto de mira de los importantes
fabricantes de ordenadores personales y
de equipos de alta fidelidad. Como era de
esperar, España, Holanda, Francia e Italia,
se han convertido en el terreno donde se
va a desarrollar una importante lucha en
pos del mercado.
Sin embargo, la guerra sin cuartel, ten-
drá lugar en el mercado americano. Indu-
dablemente, puede que con resultados
desiguales, pero las modificaciones a las
que están sometiendo los diversos orde-
nadores que se esperan enviar para su
pronta comercialización, van a dar que
pensar.
Una unidad de diskette y software in-
corporado, 128K memoria RAM de video,
así como 1 28K de memoria para el usua-
rio. También se le añaden interesantes
opciones, van a dar mucho trabajo a los
ingenieros de Commodore, si desean
combatir el gigante amarillo.
Z800,
¿sucesor
del Z80?
La gran incógnita en el
desarrollo de la segunda
versión del MSX se va a en-
trar en la Unidad Central de
Proceso. Z800 y Z8000, son
las dos posibilidades con
las que se cuenta a la hora
de hacer un ordenador de
16 bits.
Esta versión, totalmente
compatible con el Z80, per-
mitirá al ussuario y a los fa-
bricantes, optimizar el ren-
dimiento de estas compu-
tadoras. A unos, por su fá-
cil manejo, a otros, por su
flexibilidad y potencia.
Además de contener ins-
trucciones nuevas, trabaja
a una velocidad bastante
elevada y tiene el mismo
juego de instrucciones que
su predecesor, el Z80.
Por el momento, este
chip no se va a comerciali-
zar. Las razones siguen
siendo un misterio, ya que
este chip se anunció hace
varios años y aún no he-
mos visto ejemplar alguno.
De cualquier manera, Zilog,
fabricante de esta versión
más potente del Z80, cree
que a finales del presente
año, habrá información téc-
nica y manuales sobre este
chip y que las primeras uni-
dades aparecerán a princi-
pios o mediados del año
1986.
Anaya Multimedia
sus libros para MSX
Actualmente, la bibliografía exis-
tente para los usuarios del sistema
MSX, deja mucho que desear. Hay
pocos libros que puedan ayudar al
usuario medio a defenderse de las
pegas que impone un lenguaje com-
pleto y nuevo Como es el BASIC
MSX.
Anaya Multimedia entra en el
campo del MSX con un libro, que no
basa su contenido en programas de
aplicación, pero que puede convertir-
se en una ayuda inestimable a la
hora de ver casos reales.
La primera entrega, el el Libro gi-
gante de los Juegos para MSX,
no es una guía práctica de los co-
mandos del MSX, pero aunque sólo
sean juegos, éstos vienen tan bien
comentados que en momentos pue-
den ser más útil que cualquier otro
manual.
Los programas se comentan por
secciones y se explican tanto las va-
riables utilizadas como su significa-
do.
W4
Andr** Lacty «
• El toro gigante ctolbs
juegos
para MSX
Serma y Konami : la creación de software
Serma, conocida empresa en el
ámbito del software, es el distribuidor
en exclusiva para España de los jue-
gos de otra importante empresa; Ko-
nami. Expresamente dedicada a la
creación de software para ordenado-
res MSX, Konami se introduce en
nuestro país para ofrecer esos juegos
que tan famosos nombre tiene más
allá de nuestras fronteras.
Los programas vienen en el formato
de cartucho ROM, característica que
i
agradecerán los usuarios al facilitar y
simplificar el proceso de cargar un jue-
go en el ordenador. El lanzamiento de
estos juegos es inminente. Los prime-
ros en salir serán el conocido Hyper
sport, Yir ar Kung-Ku, Tennis y Circus
Charlie. Los títulos irán apareciendo
paulatinamente y los usuarios tendrán
la posibilidad de comprobar la gran ca-
lidad de estos juegos en la feria del
Sonimag y en la Feria-micro en el
Corte Inglés.
MSX 13
SOFTWARE
Programa: Generador de
Sprites.
Tipo: Juego
Distribuidor: ACESA
Formato: Cassette
6 Qué es un sprite^. La palabra
quizás nos parezca un poco desco-
nocido pero que sin duda hemos vis-
to muchos de ellos. Una definición
acertada y comprensible sería: una-
serie de puntos referidos a unas
coordenadas situadas en el espacio
cartesiano, en conjunto formarían un
dibujo o un mensaje que asociaría-
mos en nuestro interior a un significa-
do.
Muchas veces hemos visto dibu-
jos generados por un ordenador y
nos hemos vuelto locos pensando
cómo se puede hacer eso (desde
luego es para pensarlo), pero hoy en
día. todos los amantes del dibujo, la
perspectiva, etc., a pequeña escala
podremos tener un gran elemento de
ayuda con este programa "Genera-
dor de Sprites".
Siempre nos hemos visto frente a
juegos que por decir de alguna ma-
nera, nos lo daban todo hecho", y
nosotros con ayuda de nuestros cur-
sores o joytick, jugábamos limitando
en cierto modo nuestra capacidad
creativa.
Aquí podemos ser jugadores y
creadores a la vez. Creadores por-
que se nos permite en la modestia
del programa explayar nuestros po-
deres o facultades creativas y aún
más de diseño o dibujo, y jugadores
porque ¿quién no se divierte creando
y desarrollando sus ideas y fanta-
sías 9 .
Generar un sprite con este progra-
ma es muy fácil de realizar, observe-
mos la pantalla un cuadrado de 16 x
16 casillas, que rellenaremos en or-
den y medida a nuestro gusto, es de-
cir, teniendo en cuenta el sprite que
vamos a generar. Este se irá forman-
do porque la casilla o casillas que va-
yamos designando se cambiarán de
color.
Aparecerá en la casilla (1, 16), un
cuadrado de color, que iremos mo-
viendo a lo largo y ancho del cuadra-
do, es decir, vertical y horizontalmen-
te. Para ir rellenando casillas bastará
que una vez colocada la casilla móvil
en el lugar adecuado pulsemos la
barra espadadora, y ese cuadrado
formará parte de nuestro sprite. Si
por el contrario nos hemos equivoca-
do, y ese no era el sitio adeecuado,
bastará con pulsar la tecla designada
en nuestro ordenador por las siglas
"BS", junto con la barra espaciadora
en el cuadrado que deseemos bo-
rrar.
Terminaremos nuestro sprite y a la
vez nuestra obra al pulsar "retum".
Durante todo el proceso de creación
de nuestro sprite tendremos un cua-
drado de menores dimensiones que
nos irá reflejando la figura que vaya-
mos creando, para visulizarlo de una
forma más clara, la síntesis del spri-
te.
Una vez terminado nuestro sprite,
los puntos de las coordenadas utili-
zadas servirán en un futuro como
instrucciones si deseamos volver a
generarlo.
Debajo de estas instrucciones, se
imprime la pregunta. ¿Quieres pasar-
lo a impresora 9 (S/N), teniendo con
esto la posibilidad de crear un amplio
archivo de sprite, ya que al tener los
comandos para su realización, po-
dremos recrearlo siempre que quera-
mos.
Con este programa podremos ge-
nerar tantos sprites como necesite-
mos, y con una gran capacidad de
singularidad reflejo de lo que noso-
tros seamos capaces de generar.
Más de un juego de diversión es
un juego didáctico, pero no cabe
duda que el entretenimiento está
asegurado.
I
Puntuación:
Presentación: 6
Claridad: 8
Rapidez: 7
Programa: Panic Junction.
Tipo: Juego
Distribuidor: E.M.S.A.
Formato: Cassette
¿Quién más de una vez no ha su-
bido a un tren, y ha disfrutado todo
el trayecto viendo pasar grandes
mostruos de acero a velocidades in-
sospechadas?, o ¿quién más de una
vez no ha jugado con sus máquinas,
vagones, a ser jefe de estación ha-
ciéndolas pasar por los caminos más
raros y circunstancias más extra-
ñas?
Cuando miramos las vías férreas,
nos parecen un entramado sin fin
que se confunde en nuestras men-
tes, pues algo más fácil que todo
esto aunque de mayor rapidez y di-
namismo nos ofrece este programa.
No es un juego de complicado
manejo, aunque nuestros objetivos
principalmente son tres. En nuestra
pantalla, aparece un primer cuadro
superior por el que van circulando lo-
comotoras y aquí surge un pequeño
problema que es que no siempre van
circulando por la vía que deberían.
Un segundo cuadro de menores
dimensiones que nos señala el nú-
mero de locomotoras con las que en
ese momento vamos a jugar y la difi-
cultad que presentan, es decir un
14 MSX
croquis o la visión general para que
podamos coordinar nuestros movi-
mientos y saber a que vía debemos
hacer que se dirija la locomotora que
circula en una vía ya ocupada.
Y un tercer cuadro en el que más
atención debemos de mostrar. Aquí
nos encontramos nosotros como
"salvadores" de que no ocurra una
catástrofe. Nos encontramos meti-
dos en un cuadro que a primera vista
parece un laberinto, pero no entraña
mayor dificultad que la rapidez y agi-
lidad mental. Dentro del cuadro hay
un número definido de palancas que
corresponderán a los trayectos de
vía que permiten el traslado de una
locomotora a otra vía para así subsa-
nar un choque. Nos moveremos a lo
largo y ancho de este habitáculo,
ayudados por nuestros cursores, o
también con nuestro joystick. Una
vez que lleguemos a la palanca que
deseamos mover tendremos que
pulsar la barra espaciadora y con
nuestros cursores superior e inferior
dar la orden para que así se despla-
ce la locomotora a una u otra vía,
quiere esto decir que si nosotros gi-
ramos la palanca hacia arriba, la lo-
comotora cambiará su trayecto al de
la vía superior; si por el contrario gira-
mos la palanca hacia abajo, descen-
derá de vía. Si necesitamos ir a otra
palanca para que nuestro guarda-a-
gujas pueda evitar otro choque, bas-
tará volver a pulsar la barra espada-
dora y quedará libre para moverse
en cualquier dirección que desee-
mos.
Tal vez resulte a primera vista un
juego monótono, pero cuando entre
en él, y vea sus propias característi-
cas, es decir, las sensaciones que a
usted le ofrezca, verá que es un jue-
go en el que tendrá que adelantarse
al ordenador. El juego terminará
cuando hayamos permitido que cho-
quen cinco locomotoras, pero confia-
mos en sus reflejos para que esto no
ocurra.
En su formato es un juego agrada-
ble de ver, ya que tiene muchos pun-
tos para concentrar vuestra visión;
las locomotoras, el croquis de funcio-
namiento de éstas y nosotros.
El color está muy conseguido y en
conjunto es un juego muy singular.
I
Puntuación:
Presentación: 8
Claridad: 7
Rapidez: 8
MSX 15
SOFTWARE
Programa: Contabilidad
Doméstica
Tipo : Juego
Distribuidor: Dimensión
New
Formato: Cassette
Dentro de las diversas formas en
que podemos llevar un orden clasifi-
catorio de nuestros quehaceres do-
mésticos, nos encontramos con este
programa, pensando para que poda-
mos aprovechar y utilizar nuestro or-
denador, con un fin tan importante
como es llevar la contabilidad, es de-
cir nuestra contabilidad casera.
Hoy en día, un elemento tan im-
portante como es atender de manera
específica nuestra economía se vé
informatizado a un nivel que propia-
mente puede hacer y dar las satis-
facciones de los amantes del equili-
brio y la información.
La utilidad de la contabilidad de
todos es conocida, pero vamos a ha-
cer referencia a las características de
este programa y a los medios y ge-
neralidades a los que está referido.
LLevar bien una economía do-
méstica hace necesaria la presencia
de un programa el cual nos pueda
ayudar y a la vez distraer, sirviéndo-
nos en los fines a los que haya sido
destinado.
Ese sector dedicado a la peque-
ña empresa también puede encon-
trar aquí, un fiel sustituto de las per-
sonas dedicadas a esta ciencia, y
además conseguir a la vez una infor-
mación detallada y concisa la cual no
se escape a nuestro entendimiento.
El tiempo real en que este progra-
ma se mueve, es el tiempo que dura
un ejercicio económico, es decir, si
usted, ha decidido comenzar su co-
tabilidad doméstica, hoy día 1 -junio-
85, este programa le registrará todas
las entradas y salidas efectuadas en
el período de un año a contar desde
la fecha antes citada, las cuales se-
rán recogidas en una cinta cassette
que usted dispondrá para ello.
El aspecto interno que destaca-
mos, es una terminología dirigida al
carácter doméstico de nuestro orde-
nador. Debemos tener en cuenta
que nuestras posibilidades de rela-
cionar exteriormente nuestra contabi-
lidad, se ve favorecida por los recur-
sos con que contamos en el
programa, es decir, la opción de po-
der remitir nuestros movimientos has-
ta un total de nueve cuentas banca-
rias, permitiéndonos, en el momento
que los solicitemos, en el momento
rio y el saldo correspondiente a la fe-
cha indicada.
Se le permite a su vez indicar
hasta veinte conceptos diferentes de
entradas y salidas y el interruptor
hasta 250 registros de movimientos,
además de las nueve cuentas ban-
carias ya citadas, todo ello por fiche-
ro.
Obviamente podría obtener tan-
tos ficheros como desee, teniendo
el propio programa un opción espe-
cializada para la lectura y grabación
de los mismos.
'. '- ~* i 3r\
MEW '.ONThI IL I V*+t> PEf ■ .
1.
-€NT*?rtD*4 DC D**TOS
3.
BUSQUE*** D€ D*TQS
3.
-hnuu*: i on datos
A .
y.
-PREVISIONES
6.
-DATOS MNClWIOS
T .
-SA|_DOS BAttCAfflOS
8.
-ORABACION FICHERO
9,
-CECTUK* FICHEROS
O.
-DEFINICION CONCEPTOS
1 rxl
t«vu« mi* of c ion <NWN
Todos estos pasos se irán conse-
cutivamente haciendo de manera
que no le resulte complicada su eje-
cución el programa le irá indicando
en todo momento los pasos a seguir.
El menú principal nos presenta 10
opciones de 1 al 0, para que noso-
tros introduzcamos en cada uno de
ella los registros que queramos guar-
dar o anotar.
En la opción 0 se nos capacita
para nombrar hasrta 20 conceptos
forma que tendremos de denominar
aquellos 1 campos específicos que
queramos llevar más regularmente
en nuestra economía, para su ejecu-
ción debemos tener apretado el
"caps lock", el cual nos permitirá re-
flejar en la pantalla las instrucciones
de mayúsculas y a su vez la posibili-
dad de reflejar en el ordenador las
entradas y salidas de los recibos o
gastos remitido a cada uno de los
conceptos.
El menú anteriormente citado se
nos presenta con diez opciones las
cuales vamos a enumerar señalando
sus caracteristicas más importantes.
Le permite dar nombre hasta a
20 conceptos, aquellos que usted
disponga para llevar más regular-
mente su contabilidad.
A su vez en la parte inferior de la
pantalla, se indican tres opciones,
una primera opción para definir con-
ceptos, una segunda que los modifi-
ca y una tercera para volver al menú
principal. Una vez tenga definidos los
nombres de los conceptos, le irán
permitiendo registrar todos los movi-
mientos a nivel de entrada y salida.
Entonces utilizaremos la opción n° 1 ,
denominada entrada de datos, en la
cual aparece escrito el orden en que
tiene que introducir los datos y el lu-
gar adecuado para ellos. Estos datos
hacen referencia, al día, mes y año
(DDMMAA), n° de c/c, cantidad o vo-
lumen, etc.
La opción n° 2, denominada,
"búsqueda de datos", nos permite
acceder a cualquier dato, que haya-
mos registrado anteriormente y los
cuales podremos obtener por fecha,
concepto, cantidad y memo (referen-
cia del concepto), teniendo también
la posibilidad de obtener un listado
de todos ellos para hacernos una
idea de la situación.
Anulación de datos, opción n° 3,
como su propio nombre indica, esta
nos capacita para poder anular o
modificar algún error en la entrada de
datos y así borrarlo del fichero princi-
pal.
Opción n° 4, Balance: Es una de
los apartados más importantes por-
que nos permite establecer una vi-
sión de los datos registrados y el po-
der obtenerlos por impresora.
Opción n° 5, Previsiones: Nos
permite dotar provisiones referidos á
los datos y balances correspondien-
tes.
Opción n° 6, Datos bancarios:
Nos hace referencia a las nueve
cuentas bancarias que podemos utili-
16 MSX
zar para llevar nuestra contabilidad y
las cuales podremos conseguir sa-
ber su saldo en cualquier momento.
Opción n° 7, Saldo bancarios:
Referida integramente a la anterior,
nos ayudará a obtener el extracto de
la cuenta que elija pudiendo además
regularizar el saldo si lo desea.
Opción n° 8, Grabación de fiche-
ros: Nos permitirá resguardar todos
los datos registrados en una casset-
te que usted habrá dispuesto para
ello.
Opción n° 9, Lectura de ficheros:
Podrá con esta opción leer de la cin-
ta un fichero, aunque perderá los da-
Programa: O'Thelo.
Tipo: Juego
Distribuidor: Dimensión
New
Formato: Cassette
en las que más de una vez nos han
puesto nuestros compañeros o ami-
go de partida.
El hombre siempre ha sido pre-
cursor de avances, nuevos prototi-
pos y ha desarrollado su dapacidad
resolutiva tanto en la creación de ins-
trumentos de mejora para la socie-
dad, como elementos para satisfacer
y cultivar su interior en sus momen-
Todos aquellos que hayamos pa-
sado largos y entretenidos ratos ju-
gando, sabemos las principales ca-
racterísticas de este juego, es decir
su infraestructura, las reglas en las
que se basa, los momentos de duda,
concentración, nerviosismo y como
no, la capacidad de desarrollo, tácti-
ca y previsión frente a los duros mo-
vimientos y situaciones angustiosas
- *>^r t o
M-Mc tonado
r*or mal
tos de ocio, aquí aparece con un pa-
pel preponderante v con el futuro a
su favor, el software.
Dentro de los numerosos progra-
mas que inundan el mercado aunque
cada día los nuevos programas son
una superación de los anteriores, en-
contramos aquellos juegos que una
vez fueron moda y que hoy forman
tos que posea en la memoria del or-
denador.
Estas son las caracteristicas es-
tructurales del programa, las cuales
aplicadas a una contabilidad domés-
tica pueden ser de gran utilidad para
conseguir llevar una economía equili-
brada y al día.
i
Puntuación:
Presentación: 8
Claridad: 6
Rapidez: 8
un conjunto de clásicos, indispensa-
ble para cualquier videoteca de soft-
ware, entre los que se encuentra
OThelo.
Las personas en nuestro "ego",
experimentamos gran satisfacción
cuando vencemos a nuestro adver-
sario, habiéndonos valido de nuestra
astucia y habilidad, en este juego po-
dremos experimentar todo ese tipo
de sensaciones e incluso nuevas a)
sumirnos en el mundo de los ordena-
dores y observar lo necesaria y satis-
MSX 17
SOFTWARE
factoría que resulta su compañía.
El carácter general que caracteri-
za a todos los juegos de reflexión y
dinámica estructura se vé individuali-
zado en este juego tan singular, re-
flejando como está claro las posibili-
dades que tenemos de elegir
adversario: persona u ordenador.
Es juego creado con una ampli-
tud de miras para distraernos, co-
menzaremos cargando el juego en
nuestro ordenador y éste realizará un
pequeño estudio de la situación, es
decir:
1 0 Si nosotros deseamos jugar
con el ordenador (implacable),
o
1 o si jugaremos con otra perso-
na como adversario.
Si optamos por la segunda op-
ción mediremos nuestra capacidad
de estrategia frente a nuestro com-
pañero y seguro que pasaremos un
rato o una tarde de los más agrada-
ble.
No obstante si aceptamos a
nuestro ordenador como compañero
de diversión y distracción, sin duda
no hemos elegido mal, pero ... pero
será un adversario al cual se le pue-
da hacer cambiar de opinión con una
agradable locución o una inminenete
sentencia, pues nuestro ordenador
jugará con el tesón, implacabilidad,
sangre fría y astucia de la que pudie-
nuestras posibilidades pues el orde-
nador no nos dará alternativa para
volver atrás ya que jugará siempre en
cualquier nivel de los que estemos,
al máximo de sus posibilidades.
Tampoco se nos permitirá hacer
trampas, pues el mismo ordenador
será arbitro y señalará "jugada ilegal"
cuando hayamos cometido alguna
falta.
La estructura de la pantalla es
muy fácil, en el margen lateral dere-
cho, nos aparece un cuadrado de
8x8 casillas, en donde irán colocan-
do las fichas a lo largo de la partida,
en el lado lateral opuesto nos dirá el
turno del jugador al que le toca mo-
ver y también nos dirá cuando reali-
cemos una "jugada ilegal".
Abajo en el margen inferior seña-
lará las fichas con las que contamos
al inicio de la partida y así a lo largo
de ella. Esto se verá reflejado en la
normal seremos nosotros quienes
demos fichas de ayuda al ordena-
dor.
El juego comienza presentándo-
nos dos fichas negras y dos blancas
(en el caso del nivel normal), situa-
das en diagonal, en el centro del
cuadrado. Se trata de conseguir re-
llenar el cuadrado con el mayor nú-
mero de fichas nuestras posible,
pero para esto debemos de conocer
las reglas del OThelo. Conseguire-
mos "comer" las fichas de nuestro
adversario siempre que coloquemos
dos de nuestras fichas a los laterales
de las suyas (que pueden ser una o
varias). Las posiciones de nuestras
fichas, bien vertical, horizontal o dia-
gonal a las fichas de nuestro adver-
sario.
Se nos avisará de que estas fi-
chas han sido comidas porque cam-
biarán al color de nuestras fichas y
también porque se verá reflejado en
los marcadores.
Colocaremos las fichas en la ca-
silla que queremos pulsando primero
la letra de la columna y después el
número de la fila.
La característica del juego le harán
pasar a un estado de gran concen-
tración y a la vez de diversión.
Es un juego creado especialmen-
te para los "amantes del OThelo"
ra disponer el mejor estratega del
mundo.
Realizará un segundo estudio so-
bre nuestras características en lo
concerniente al juego, bien, si hemos
jugado muchas veces, es la primera
vez o si somos unos expertos dignos
de mención en el OThelo.
Se presentarán nueve opciones
que medirán nuestros conocimien-
tos, estos irán desde el nivel:
1 o Muy excepcional, hasta ...
9 o Excepcional.
Deberemos saber cuales son
pantalla por "blancas" (que serán las
nuestras siempre que juguemos con-
tra el ordenador) y "negras", con las
que jugará bien el ordenador o bien
nuestro compañero, pero al fin y al
cabo nuestro adversario.
Si nuestro nivel de juego, es el
normal, tendremos el mismo número
de fichas que nuestro adversario, si
nos encontramos por debajo del ni-
vel normal, nos dará unas fichas de
ayuda y si ocurre el caso contrario,
que estemos por encima del nivel
pero a su vez deja cabida a todas las
personas que quieren iniciarse en
este ingenioso y entretenido juego.
Puntuación:
Presentación: 8
Claridad: 9
Rapidez: 8
18 MSX
LIBROS EN CASTELLANO PARA TU ORDENADOR
ZX Spectrum y QL
ríCCWMAíiCO
con AMSTRAQ
'Manual de Referencia
Basle del Program.
AMSTRAD.
La mas autorizada y
completa guia para
programar en
Locomotive Basle
3.400 - Pts
'Sensacionales
Juegos AMSTRAD
Listados completos
de 27 estupendos
juegos de muy
diversos estilos
1 950 - PtS.
' Programando con
AMSTRAD
Fundamental para el
usuario principiante
Ameno y repleto
de ejemplos
2.400 - PtS.
recreo M JvQiiW
PRINCIPIANTES
CON \MSTR\0
•40 Juegos Educativos
AMSTRAD.
Listados completos
(matemáticas,
geografía, música,
etcétera) para aprender
divirtiéndose.
1.950 - PtS.
'Lenguaje Máquina...
AMSTRAD.
ideal para iniciarse
en el código
máquina del 780
Y EN EL SISTEMA
OPERATIVO DEL AMSTRAD
2.100 - PtS.
•interferencia
Artificial
AMSTRAD.
Convierta su
AMSTRAD en un
compañero
inteligente
1.500 - PtS.
v Manidos
r fJn
: .m%1r,id
> f +
•Sonidos y Música
AMSTRAD
Programe música v
efectos sonoros v
convierta su
amstrad en un
sintetizador
1.200 - Pts.
•Programación Básica
spectravldeo.
imprescindible para
iniciarse en el
dominio de las
estructuras
fundamentales del Basic
1.800 - Pts.
•Programación Avanzada
SPECTRAVIDEO
Para saber más
ficheros, subrutlnas.
gestión de errores,
funciones definibles,
etcétera
2.400 - PtS.
'Código Maquina
SPECTRUM
Las instrucciones
fundamentales
del Z80 para iniciarse
en el código
maquina
2 100 - PtS
•Los 20 mejores
programas.
Selección de
excelentes
programas en Basic
1 800 - Pts
• Programación
avanzada
Subrutmas. trucos y
análisis para mejorar
tus programas
2.200 - Pts
I | «O* J'«»?3 I
H 3/jft»/i rtmm ? " I
•Las 40 mejores
SUBRUTINAS
Las más útiles rutinas
en código máquina
reunidas en un solo
volumen
1 950 - Pts.
• Programando
con OL.
Texto introductorio
claro, útil v ameno
1.950 - Pts.
IAN SINCLAIR
PROGR AMANDO
CON El
MSXBASC
*0L Superbaslc.
Un curso avanzado
para dominar el
excelente Basic de tu
OL
1.950 -Pts
•Programando con
msx Basle
Curso completo y
detallado con
numerosos
ejemplos prácticos
2 200 PtS
•El libro de juegos
MSX
Listados completos v
comprobados de
21 excelentes
luegos
1 900 - PtS
inúBHSznmp
PUBLICACIONES
Avda. del Mediterráneo, 9
TelS. 4334548-4334876
28007 MADRID
Delegación en Cataluña:
Tarragona, 110 - Tel. 325 10 58
08015 BARCELONA
DE VENTA EN SlOrteJn^t»^
Y TIENDAS ESPECIALIZADAS
Marca registrada por el Grupo indescomp
Comparativa entre los
ordenadores
Cada ordenador personal tiene sus defensores
y sus detractores. Características que a unos
gustan, pueden no ser del agrado de otros. Es
lógico y normal que cada usuario defienda a su
ordenador personal con uñas y dientes,
basándose en criterios a veces nada
convincentes.
Expondremos las características del BASIC MSX,
a la vez que lo comparamos con el lenguaje de
los ordenadores más populares del mercado,
que como ya supondréis son el ZX Spectrum y
el Commodore 64.
Q
uien no ha oído hablar del ZX
| Spectrum o del Commodore
64? En el creciente mercado
español, se han introducido
múltiples ordenadores personales, al-
gunos con mejor suerte que otros.
Todos ellos tienen sus seguidores
particulares, aunque muchos de los
cuales lo compraron por ser la nove-
dad del momento.
Pero el tiempo paso y el ordenador
personal se está convirtiendo no sólo
en el compañero ideal para los ratos
de ocio, sino también en ayuda im-
prescindible en el hogar. Ya no se
matan marcianos intergalácticos, ni
comecocos, ni bichos parecidos,
también podemos escribir artículos o
20 MSX
BASICS de los
más populares
cartas con un tratamiento de textos,
llevar una agenda completa o incluso
la contabilidad de la casa. Todos es-
tos aspectos son los que caracteri-
zan a esos ordenadores, personales,
es decir, la posibilidad de tener una
máquina completa y versátil, y fácil
de programar.
En lo que respecta a la versatilidad
de los ordenadores, nadie dudaría si
dijésemos que son capaces de reali-
zar las taréas más inverosímiles, por
muy difícil que ésta sea. Ahora bien,
en el tema de la programación la
cosa cambia.
Comprar el MSX, ZX Spectrum (en
el artículo, haremos referencia siem-
pre al Spectrum de 48 K, aunque sea
igual que el de 16 K) y Commodore
64, y dar una opinión a favor de tal o
cual ordenador no es nuestro menes-
ter. Destacaremos las particularida-
des de las instrucciones de cada or-
denador y dejaremos que sea usted,
lector, quién dé la última opinión.
Además, esperamos que este ar-
tículo le sirva para discurrir, con sóli-
dos argumentos, la necesidad de
que sus amigos se compren un
MSX.
El BASIC es un lenguaje de pro-
gramación que está al alcance de
todos. Como es lógico, la dedicación
es la mejor manera de obtener la ex-
periencia y los resultados necesarios
que nos permita utilizar el ordenar
hasta el límite de sus posibilidades.
La facilidad con que unos apren-
den antes que otros, a veces no es
cuestión de dedicación, sino de los
complicado que puede ser o no la
programación en el ordenador.
Aquí topamos con el primer incon-
veniente. Así como en el Zx Spec-
trum y en el MSX, los comandos e
instrucciones son fáciles y sencillas
de realizar, en el Commodore pode-
mos comprobar lo complicado de tal
operación. Pero no entraremos en de-
talles y explicaremos más las diferen-
cias existentes entre los distintos ti-
pos de BASIC que presentan.
Los comandos básicos, que se
MSX 21
FOTO 1:
Los tres ordenadores más populares enfrentados en un examen
I
pueden hallar en los tres ordenado-
res, son los siguientes:
— IMPUT
— GOTO
— PRINT
— READ
— DATA
— RESTORE
— GO SUB
— FOR...TO...NEXT...STEP
— RETRUM
Existen más comandos, pero los
que están implementados en uno no
lo está en el otro, por lo que veremos
estos casos aislados a continuación.
Además, cada fabricantes ha dotado
a su ordenador con unas característi-
cas y posibilidades que el resto no
tiene.
Pero nuestra lista de comandos,
por el momento, está vacía. Sólo
contiene aquellas instrucciones que
podemos encontrar, en estos y otros
ordenadores más.
Veamos pues, cuales son las ins-
trucciones que tienen una función simi-
lar en unas máquinas y otras. Dividi-
remos este estudio en apartados,
siendo la primera sección la dedica-
da a las instrucciones de Entrada/
Salida de datos.
Pero antes de entrar a comentar la
materia, haremos una aclaración. El
ZX Spectrum tiene el interface que le
permite crear ficheros secuenciales.
Este caso no se ha considerado, por
dos motivos; el primero de ellos es
que la mayoría de los usuarios no po-
seen dichos interface y segundo,
esas instruciones como OPEN ,
CLOSE , etc, funcionana si y sólo si,
se ha conectado el interface I al or-
denador. Si se aplica directamente
veremos el mensaje de error corres-
podiente.
22 MSX
De los lenguajes de
programación BASIC,
vistos hasta ahora, el
del MSX, viene a ser
la opción más
completa y sencilla de
las que hay.
Instrucciones de Entrada/
Salida
Para el manejo del cassette, nos
encontramos con un buen repertorio
en cualquiera de los ordenadores.
Aunque el MSX se lleve la palma ya
que incorpora un completo juego de
instrucciones tales como:
CSAVE, CVLOAD, CLOAD?, BSAVE,
BLOAD, OPEN, "CAS:" PRINT e IM-
PUT . etc, para gestionar la entrada
y salida de datos de dicho periféri-
co.
Las instrucciones CLOAD y CSA-
VE, equivalen a las instrucciones
LOAD y SAVE del Spectrum y Com-
modore, mientras que CLOAD?,
equivale a la instrucción VERIFY. El
Spectrum no dispone de las instruc-
ciones OPEN PRINT , e IMPUT , para
el manejo del cassette. Estas en
cambio, si están en el Commodore
64.
Siguiendo con los soportes mag-
néticos, entraríamos a comentar las
instrucciones que controlan el dis-
kette. En este caso, nos encontra-
mos con que el Commodore y el
MSX, pueden manejar la unidad de
diskette directamente. En el primer
caso, al final de la instrucción SAVE o
LOAD, se indica, mediante un núme-
ro, si la operación la vamos a realizar
en cassette o en diskette, mientras
que en el segundo caso, basta con
indicar la instrucción SAVE o LOAD.
El Spectrum no posee instrucciones
para controlar diskettes, aunque el
mercado ofrezca unidades como op-
ción adicional al cassette, ya que
aquel anula totalmente la posibilidad
de contar con el microdrive.
En orden de importancia, veamos
a continuación las instrucciones que
manejan la impresora. Aquí, tanto el
Spectrum como el MSX, tienen incor-
porado las instrucciones LPRINT y
FOTO 2:
MSX, con su BASIC de Microsoft, es de
los que mejor futuro puede esperar.
FOTO 3:
El Commodore, posee uno de los
BASICs más complicados y difíciles de
entender.
MSX 23
Listado 1
LLIST, para listar parte o totalidad der
un programa. Además el Spectrum
tiene el comando COPY, que permite
obtener una copia de pantalla por im-
presora. Este comando no lo tienen
el MSX ni el Commodore, lo que sig-
nifica que para copiar de pantalla, es
necesario realizar una rutina en códi-
go máquina y aplicarla.
Para leer información del teclado,
cada ordenador tiene una instruc-
ción. En el MSX y Spectrum, esta es
INKEY , mientras que en el Commo-
dore 64, la instrucción es GET. En
todos, realiza la misma función, lee el
teclado para comprobar si se ha pul-
sado una tecla.
En lo que se refiere a instrucciones
que controlen directamente los joys-
ticks, podemos decir, que el MSX
aventaja a todos sus competidores.
Ninguno de los ordenadores en
cuestión tiene instrucciones BASIC,
que permitan tener un control total y
absoluto del joysticks. Entre las di-
versas instrucciones que se ofrece,
podemos destacar instrucciones del
tipo:
STICK, ON STRIG GOSUB, SRIG,
etc. Con ellas se pueden conocer el
estado de los joysticks y si se ha pul-
sado el botón de disparo. En el Com-
modore, esta operación se realiza
mediante POKEs y el Spectrum care-
ce de toda instrucción (además del
port de joysticks que permite un con-
trol de estos periféricos).
Por último, en este apartado, vere-
mos las instrucciones que hay en
cuanto a programación se refiere.
Entre el grupo de comandos de
entrada/salida que hay, los tres orde-
nadores incorporan las instrucciones
INPUT y PRINT, lo que permiten una
comunicación directa ordenador-
usuario. Pero además de ellas, el
MSX y spectrum, añaden a la opción
INPUT otra variante, LINE, que com-
pleta el juego de posibilidades. Aun-
que si quiere más, el MSX implemen-
ta la opción USING en el comando
PRINT que le permitirá formatear los
datos de salida.
Lógicamente y debido al tiempo
que llevan el Commodore y el Spec-
trum en el mercado, han ido apare-
ciendo periféricos adicionales que
1800 REM PRUEBR 1
1010 PRINT M P M
1020 FOR K>0 TO 1000
1030 NEXT K
1040 PRINT "F"
1030 END
Listado 2
1000 REM Prueba 2
1010 PRINT M P"
1020 K«0
1030 K«K+1
1040 IF K<1000 THEN 1030
1050 PRINT "F M
1060 END
Listado 3
1000 REM Pru#b* 3
1010 PRINT"P M
1020 K>0
1030 K=K+1
1040 fi«< K/K )*K+K-K
1050 IF K<1000 THEN 1030
1060 PRINT "f"
1070 END
Listado 4
1000 REM Pru#bj. 4
1010 PRINT M P"
1020 K>0
1030 K-K+l
1040 R-< K/2 )*3+5-5
1050 IF K<1000 THEN 1830
1060 PRINT "f"
1070 END
Listado 5
1000 REM Prueba S
1010 PRINT M P M
1020 K-0
1030 IOK+1
1040 R-< K/2 >*3+ 4-5
1050 GOSUB 1090
1060 IF KX1000 THEN 1038
1070 PRINT "f "
1080 END
1090 RETURN
van complementando el ordenador.
Así podemos ver como el Interface I
es la mejor opción a la hora de terfllr
información accesible y en un tiempo
nada despreciable, mientras que el
Interface II, pemite conectar cartu-
chos ROM dos joysticks al ordena-
dor. Pero esto, al no ser parte del
ordenador no entra en este estudio.
Pasemos a continuación a las ins-
trucciones de control gráfico.
Instrucciones de control
gráfico
Sin lugar a dudas, hemos llegado
a la parte más curiosa e interesante
de las que hay.
La gestión de gráficos es posible
gracias a que tanto el MSX como el
Commodore, utilizan un controlador
de video, que se encarga de gestio-
nar la pantalla.
t En el Commodore, no existen ins-
trucciones gráficas propiamente di-
chas, ya que todo lo relacionado con
gráficos, incluido lo referente al ma-
nejo de 8 sprites, se realiza mediante
los 47 registros del controlador de vi-
deo, accediéndo a ellos mediane el
comando POKE.
En el BASIC MSX, podremos en-
contrar numeosos comandos para la
realización, creación y manejo de
sprites, y varios modos de pantalla,
cosa que no tiene ninguo de los or-
denadores en cuestión.
Veamos como son las instruccio-
nes del MSX, que permiten semejan-
te control.
Podemos comenzar con PSET (x,
y), c. Este pone el punto especifica-
do a un color determinado. En el
Spectrum, equivale a la instrucción
PLOT. Luego tenemos la instrucción
PRESET (x, y),c, que restituye el co-
lor de un punto. DRAW y LINE trazan
líneas pero con la segunda opción se
pueden dibujar cuadrados y rectán-
gulos, con la posibilidad de poderlos
colorear por dentro. Para dibujar ar-
cos, círculos y elipses, hay un co-
mando que lo hace directamente.
CIRCLE (x, y(, r, c, ai, af, fe dibujará
un círculo con las coordenadas x, y
en el centro, donde r es el radio (en
24 MSX
radianes), c es el color, ai y af el án-
gulo inicial y final, respectivamente y
fe es la relación existente entre el eje
x e y.
El Spectrum posee esta instruc-
ción pero con el formato algo menos
compleo, CIRCLE (x, y), c, dibuja un
círculo con el centro en las coorde-
nadas x, y, con rádio c (en radianes).
También existen algunas, de estas
instrucciones en el BASIC del Spec-
trum, aunque éste no disponga de
un chip de video lo que empobrece
la resolución gráfica, algunas de las
cuales son:
■ — PLOT
— DRAW
. — CIRCLE
— BORDER, INK, PAPER
— FLAH
— INVERSE
— OVER
— POINT
— ATTR
Como se puede comprobar, casi
todos estos comandos tienen su
equivalente en el MSX. Podríamos
destacar, por ejemplo, que las ins-
trucciones del Spectrum BORDER
INK, PAPER, en el MSX, equivalen a
COLOR i, j, k. Sin embargo, el MSX
no posee las instrucciones INVERSE
FLAHS y OVER.
El Commodore no tiene comandos
directos y realiza todas las operacio-
nes de control gráfico, tanto de crea-
ción como de manejo, mediante los
consabidos POKERS a las posicio-
nes de la memoria expresamente
(tW HA OeSADo^
\AQOl IST05 8AS/CS?
Listado 6
6
1000 REM Prueba
1010 PRINT"P"
1020 K>0
1021 DIM PK3)
1030 Din M<5)
1040 K«K+1
1050 R«< K/2 )*3+ 4-5
1051 FOR L-l TO 5
1052 NEXT L
1060 GOSUB 1120
1070 FOR L-l TO 5
1080 NEXT L
1090 IF K<1000 THEN 1030
1100 PRINT M f 1
1110 END
1120 RETURN
Listado 7
1000 REM Pruébi 1
1010 PRINT"P n
1020 K-0
1021 DIM M<5)
1030 DIM M(5>
1040 K«K«M
1050 R*< K/2 )#3+4-S
1051 FOR L»l TO 5
1052 NEXT L
1060 GOSUB 1130
1070 FOR L*l TO 5
1080 M(L)«R
1090 NEXT L
1100 IF K<1000 THEN 1030
1110 PRINT "f
1120 END
1130 RETURN
J
preparadas para ello.
Sin embargo, en el MSX, también
se puede acceder a la memoria de
video y controlar desde allíi la crea-
ción de gráficos y sprites. Esto se
hace gracias a instrucciones expre-
samente creadas para ello.
VPOKE y VPEEK, son dos ejemplos
claros de acceso directo a cualquier
parte de los 16 K de memoria video
que tienen todos los MSX.
No todo está escrito sobre los co-
mandos gráficos del MSX, ya que to-
davía faltan los subcomandos que
utlizados con la instrución DRAW,
permiten dibujar en cualquier sentido
y en cualquier posición.
En realidad, este punto es el más
fuerte de los MSX haciéndolos insu-
perables en este terreno, aunque
también tiene otro frente bastante
importante y muy completo a la hora
de programar; la creación de soni-
dos.
Instrucciones de sonido
Viendo las características del MSX
en el apartado de gráficos, uno po-
dría pensar que aquí se acaba la his-
toria, cuando en realidad es su inicio.
Siendo el único que, junto con el
Commodore 64, posee un chip para
la generación de sonido. Ambos
chip son polifónicos (3 voces), dis-
poniendo el MSX de 8 octavas, mien-
tras que el Commodore tiene 9. Pero
de nuevo, la potencia del BASIC
MSX, se hace notar. ¿Resultado?
Crear sonidos en el MSX es taréa
TABLA COMPARATIVA ENTRE LOS ORDENADORES MAS EXTENDIDOS
MSX
SPECTRUM
COMMODORE
LISTñC'O
LISTRDO
LISTADO
LISTADO
LISTADO
LISTADO
LISTADO
LISTADO
1
2
3
4
5
6
7
8
2-23
6.01
17.45
18.54
19.73
32. 12
45. 15
1.41
4.73
8.57
20. 98
29. 15
23.93
54.29
78.91
1 . 37
1.69 .
9.80
18é'4ÉJ
20.30
22.01
32.61
51.22
0.90
MSX 7R
FOTO 4:
ZX Spectrum. una filosofía aplicada por
Sir Clive Sinclair al mundo del ordenador
personal.
FOTO 5:
Vista posterior del Commodore 64. Las
conexiones no son estándar, por lo que
es necesario utilizar periféricos
destinados solamente para este
ordenador.
bastante más sencilla de lo que uno
puede imaginar, mientrar que el
Commodore 64, obligará al usuario a
estudiar los contenidos de la memo-
ria y a usar innumerables instruccio-
nes POKE, que es la única manera
de controlar el chip de sonido.
El Spectrum no tiene tal chip, sólo
cuenta con una instrucción BEEP con
dos parámetros que controlan la
nota y la duración, esto hace prácti-
camente inexistente la posibilidad de
generar sonidos en el Spectrum.
Veamos el comportamiento de es-
tas instrucciones.
BEEP, genera en el MSX un leve
chasquido, mientras que en el Spec-
MSX, Commodore 64 y
ZX Spectrum, tres
ordenadores, tres
visiones distintas del
ordenador personal.
trum, utilizando las coordenadas ne-
cesarias, como la duración y la nota,
puede llegar a crear algo de sonido.
PLAY, se usa para tocar música. Ve
precedida por una serie de subco-
mandos que indican las notas a to-
car las características del sonido,
como pueden ser ritmo, volumen y la
octava.
Los subcomandos usados en esta
instrucción son:
C = DO D = RE E = MI F=FA G=SOL
A = LA B = SI
V — va precedido de un número en-
tre 0 y 15, sirve para especificar el
volumen de la nota.
O — va precedido de un número en-
tre 0 y 8, especifica la octava de las
notas a tocar.
R — genera una pausa en la genera-
ción de sonidos.
T — seguido de un número especifi-
ca la velocidad de efecución de la
secuencia de notas.
,S — especifica la forma de la onda.
M — especifica el período de envol-
vente.
De cualquier manera, para com-
pletar este apartado resaltaríamos la
necesidad de leer el artículo publica-
/ 1 WiZM HA DEJADO
\áaui asros 8A5/csp
ZX y Commodore
abriéron las puertas y
los ojos de aquellos
que implantaron y
vieron la necesidad de
establecer una
estandarización en los
ordenadores
personales.
do en el número 2 de MSX, denomi-
nado Generación de Sonidos, donde
se explica con todo lujo de detalles,
las innumerables posibilidades exis-
tentes en la realización de sonidos.
Acabando el tema podemos ver
una de las características más impor-
tantes del MSX; la posibilidad de ma-
nejar interrupciones, algo típico en
ordenadores de más nivel.
Manejo de interruptores
El MSX dispoe de una serie de ins-
trucciones para el manejo y control
de interruptores; éstas se pueden
producir de múltiples maneras:
1 . Interrupciones por error.
Se producen cuando se genera un
error en el programa: normalmente
devuelven el control al intérprete BA-
SIC pero se pueden controlar me-
diante una subrutina habilitada para
tal fin dentro del mismo programa.
Este se puede realizar con la instruc-
ción:
IN ERRO GOTO xxxx, que producirá
un salto a la línea xxxx que deberá
finalizar con la instrucción RESUME.
Listado 8
1080 REM Prueba 8
1010 PRINT"P"
1020 K*0
1021 DIM M<5>
1030 DIM M<5)
1040 K-K*2
1050 B«LOG <K>
1051 FOR L-l TÜ 5
1052 NEXT L
1060 OSIN(K)
1070 IF K<1000 THEN
1080 PRINT "f "
1090 END
1030
FOTO 6:
Vista posterior ZX Spectrum. Los
interlaces son una constante en el
desarrollo de aparatos y periféricos para
el ordenador.
Foto 7: Conectores universales que
potencian un standard.
2. Interrupciones producidas por
las teclas de función.
Se produce cuando se pulsa una
de las teclas de función. El control
de estas interrupciones se realiza
mediante la intrucción:
ON KEY GOSUB x1, x2, x3 que
saltará a la subrutina en función de la
tecla que se hala pulsando. Esta inte-
rrupción se puede habilitar o no con
el comando KEY ON/OFF.
3. Interrupciones por la pulsación
de la barra espaciadora o alguno de
los disparadores de un joysticks.
Se controlan mediante la instruc-
ción:
ON STRIG GOSUB y se habilita o no
con el comando STRIG ON/OFF.
4. Interrupciones por la pulsación
simultánea de las teclas CTRL y
STOP.
Estas se controlan mediante la ins-
trucción ON STOP GOSUB, se habili-
ta mediante el comando STOP ON.
Es muy útil para evitar la detención
de un programa y de esa forma pro-
tegerlo.
5. Interrupciones del temporizador.
Son las que se producen cada
cierto tiempo. Estas entran en funcio-
namiento mediante la instrucción:
ON INTERVAL - tiempo GOSUB y se
En la realización del
potente BASIC del
MSX, se nota la mano
de una importante
compañía: Microsoft.
habilitan mediante el comando IN-
TERVAL ON.
Conclusiones
Varios son los puntos a destacar
de esta pequeña comparativa. En
primer lugar, se realizó en base al or-
denador solamente y al lenguaje que
éste posee sale de fábrica. Como
mencionábamos anteriormente, de-
bido a que el ZX Spectrum y el Com-
modore, llevan más tiempo en el
mercado, indudablemente tienen el
software más diverso y completo
que hay en la actualidad, hay desde
el típico juego de marcianos hasta
una aplicación del BASIC, sin contar
con los diversos lenguajes de pro-
gramación que cuentan, además del
BASIC.
Segundo, la creciente ola de peri-
féricos y la mejora en que se han vis-
to las diversas casas comerciales al
aparecer el MSX con todos los ali-
cientes de un ordenador grande, ha
obligado a crear desde unidades de
diskettes hasta controladores do-
mésticos.
Ninguno de éstos, ha sido objeto
de estudio y creemos conveniente,
por esta razón, continuar en algún
número futuro la comparativa entre
estos ordenadores ampliados hasta
el límite de sus posibilidades.
Para finalizar, destacar que tampo-
co se ha entrado en características
de los distintos lenguajes, debido a
que se podrían escribir ríos sobre to-
dos y cada uno de ellos. Esperemos,
pues, que estas pequeñas indicacio-
nes hallan servido para asentar y di-
ferenciar las características esencia-
les del lenguaje de programación de
cada ordenador. No hemos entrado
ni en las interioridades de cada uno,
ni en los mapas de memoria, por
considerarlo ajeno a lo que deseába-
mos explicar.
De cualquier manera, hemos reali-
zado una prueba para comprobar la
velocidad de ejecución de los distin-
tos BASIC, y aunque sólo sea orien-
tativo, el cuadro muestra los tiempos
obtenidos en la ejecución de los dife-
rentes programas. Estos también se
exponen, por si algún lector desea
realizar la comparación con amigos
que tenga cualquier otro ordenador
personal.
fiooieH HA DEJADO
\AQO\ íSroS 3AS/C5?
PARTIC
NUESTRO
CONCURSO
partir del próximo número MS#6*¿?
premiará mensualmente los programas/"'
hagan llegar los lectores.
D
I ara participar en este concurso 'kM
abierto, todo aficionado a los ordénale!
con este estándar deberá hacer MegaV a?
redacción de la revista el listado, un^
cassette y un texto explicativo.
Entre todos los programas c
recibamos cada mes, serán sele^ciojj&do^
para su publicación aquellos guej
los siguientes criterios: /
— Originalidad de la aplicad
— Simplicidad del método de
programación.
La única condición para participar
el concurso será que los programas no
hayan sido publicados previamente en
ninguna revista.
A \ unque nunca se haya para
do a pensar en ello, en mu-
chos programas habrá visto
figuras (naves, coches, pájaros,
bombas,...) que se mueven en la
pantalla, que pueden pararse, acele-
rar, desaparecer, que combinándo-
las se consigue que haya acción en
la pantalla, que haya una auténtica
película de dibujos animados.
Estas figuras no se trazan con las
órdenes de gráficos (CIRCLE,
DRAW, LINE, PSET Y PRESEY). Fun-
cionan independientemente de los
comandos gráficos, y tanto es así,
que también pude haber figuras mó-
viles en el modo de textos SCREEN
1 , donde no puedes utilizar esas cin-
co órdenes. Estas figuras son los
"sprites", y vamos a contaros todo
sobre ellas.
¿Qué es un Sprité?
Un sprite es un figura móvil mo- vX;X;X
nocroma que se puede desplazar /XvXO
por la pantalla por encima de todo lo
que haya escrito o dibujado. Nada X;X;X>;
puede aparecer escrito o dibujado
sobre un sprite, más que otro sprite. •§•$•$•!
Vamos a examinar esto más deteni-
damente. £§i$i$
Lo que vea en su televisor o en su ¿•¿♦r**'
monitor como la pantalla del ordena-
dor, no es más que la superposición
de 33 planos de dibjos distintos. El
último de esos planos paralelos, el
que se halla más al fondo de la pan-
talla, es el plano principal, el plano xx-XvX-;
donde se desarrollan los textos y los
gráficos. Los otros 32 planos de di-
bujos se hallan tapando a este plano X-X-X-X;
principal, y su función es exclusivas-
mente dibujar figuras móviles. Están v:'x-X;X
D
SPRITES
MSX:
DIBUJOS
ANIMADOS
EN TU
ORDENADOR
Una de las muchas ventajas que posee la norma
MSX en comparación con otros ordenadores es
la de disponer de figuras móviles, de "sprites".
En este artículo explicaremos como poder crear
y mover sus propios Sprites desde el BASIC MSX
numerados del 0 a 31, siendo el pla-
no número 0 el más lejano al plano
principal, y el más cercano al obser-
vador, y el plano número 31 , el plano
contiguo al plano principal, y el más
lejano al observador. Por eso, una
figura móvil dibujada en el plano 0
tapará todas las figuras móviles y to-
dos los dibujos y letras que hubiera
en los p/xe/s que ella ocupa, pues
este plano está tapando a todos los
demás Una figura móvil dibujada en
el plano 1 tapará todo lo que ocupe
sus mismos p/xe/s y éste dibujado en
planos inferiores, como el 2, el
3,... hasta el plano 31 y también el
plano principal, pero podrá ser tapa-
da a su vez por una figura móvil del
plano 0. Las figuras móviles del pla-
no 2 podrán ser tapadas por las de
los planos 0 y 1 , pero taparán a su
vez a las de los planos 3, 4, 5,... 31
y plano principal, y en esta sucesión
podríamos seguir hasta el plano 31 ,
cuyas figuras móviles pueden ser ta-
padas por todas las figuras móviles
de los planos 0 al 30, pero pueden
tapar los gráficos y letras del plano
principal, los cuales, al estar en el úti-
mo plano, pueden ser tapados por
todas las figuras móviles que se di-
bujan en los planos 0 al 31.
Tipos de Sprites
No todas las figuras móviles pue-
den ocupar la misma cantidad de p/-
xe/s. Según esta cantidad, podemos
distinguir cuatro tipos de figuras móvi
les:
TIPO 0: figuras móviles de 8 fi-
las x 8 columnas de p/xe/s
TIPO 1 : figuras móviles de 8 fi-
las x 8 columnas de "p/xe/s
ampliados"
TIPO 2: figuras móviles de 16
filas x 1 6 columnas de p/xe/s
TIPO 3: figuras móviles de 16
filas x 1 6 columnas de "p/xe/s
ampliados"
Estos tipos son imcompatibles, es
decir, no pueden salir a la pantalla
figuras móviles de un tipo y de otro
tipo al mismo tiempo. Para acceder a
un tipo concreto de figura móvil, se
utiliza el segundo dato de la orden
SCREEN. Por ejemplo si queremos
obtener sprites de tipo 2 en SCREEN
1 , habrá que teclear SCREEN 1 , 2.
.Los "p/xe/s ampliados" son blo-
ques de 4 p/xe/s (2 filas x 2 colum-
nas) que en el tipo 1 y en el tipo 3 se
I l l ll l I I IIIJIMI I II lililí l i li I lili I I I I '
■ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■lililí iLL
MSX 31
utilizan como si fueran píxels. Por lo
tanto, para un figura móvil del tipol
se suministran los datos como si fue-
ra de 8 x 8 píxels aunque en realidad
sea de 16 x 16, y en realidad es de
32 x 32.
Una aplicación de estos "píxels
ampliados" puede ser, por ejemplo,
cuando tenga que hacer una explo-
sión, hacerla primero en el tipo 0,
después en el tipo 2 y por último en
el tipo 3 (con "píxels ampliados") con
los cual se conseguirá la impresión
de que la nube de la explosión ha ido
aumentando. Esto no es otra cosa
que una más de la inmensa cantidad
de aplicaciones de los "píxels am-
pliados" que ya irá descubriendo a
medida que practique con sus figu-
ras móviles.
I coloreados como "1" y los transpa-
rentes como "0". A continuación,
convienen pasar estos datos al siste-
ma numérico hexadecimal, o de
base 16:
& B00000000=&H0
& B00000000=&H0
& B00100010=&H22
& B01010101=&H55
& B10001000=&H88
& B00001000=&H8
& B00000000=&H0
& B00000000=&H0
Para definir un sprite desde BA-
SIC, hay que utilizar el mando SPRI-
TE$. Tras la palabra SPRIT$ hay que
indicar entre paréntesis el número de
I figura móvil a que se refiere. Como el
ordenador puede acordarse de hasta
Definiendo Sprites
Vamos a definir una figura móvil;
por ejemplo, una gaviota. Antes de
nada habrá que diseñarla (figura 1).
Hemos elegido el tipo 0 de figuras
móviles de 8 x 8 píxels, pues es el
más sencillo de elaborar.
En el diseño de una figura móvil es
muy importante recordar queaquel
color del que vayamos a pintar esta
figura móvil (sólo uno, los sprites son
monocromos) sólo afectará a los pí-
xels que hayamos decidido que
constituyen la figura móvil, pues el
resto de los píxels que complen las 8
filas x 8 columnas, y que aparecen
en blanco en la figura 1 , en realidad
las letras o dibujos que se desarrollen
en estos 8x8 píxels y cuyos píxels
coincidan con los píxels coloreados
de la figura móvil aparecerán del co-
lor de la figura móvil, pero aquellos
dibujos o letras que estén dentro de
los 8 x 8 píxels y cuyos píxels coinci-
dan con los definidos como transpa-
rentes en la figura móvil aparecerán
perfectamente.
Esto se cumple también en cual-
quier otro tipo de figuras móviles.
Siguiendo con el diseño de la figu-
ra 1 , ahora correspondería pasar las
filas horizontales de 8 píxels al siste-
ma binario, considerando los píxels
32 MSX
I 256 figuras móviles) del tipo 0 y del
¡ tipo 1 ) las numera de 0 al 255. Así, si
numeras esta figura móvil como la fi-
I gura número 0, tendrás que poner:
SPRITES (0) = CHR$ (&H0) + CHR$
(&H0) + CHR$ +
+ CHR$ (&H55) + CHR$ (&H88) +
CHR$ (&H0) + CHR$ + CHR$ (&H0)
Tras el signo "igual", como ya has
visto, tendrás que poner ocho veces
la función "CHR$", y entre parentési-
sis y por orden de arriba a abajo, los
datos en hexadecimal de las líneas
horizontales de tu figura móvil (el co-
lor se detemina después con otra or-
den).
Pero de esta manera sólo se pue-
den definir las figuras móviles del
tipo 0 y del tipo 1. Para definir las
figuras móviles de 16 filas x 16 co-
lumnas, ya sea de píxels o de píxels
ampliado, hay que dividir esta figura
móvil en cuanto "subfiguras móviles",
de 8 filas x 8 columnas, e introducir
los datos de estas subfiguras según
el orden indicado en la figura 2. Para
esta operación necesitarás usar 32
veces la función CHR$, para introdu-
cir los datos hexadecimales de las lí-
neas horizontales de 8 píxels.
Has de tener en cuenta también
que la figuras móviles del tipo 2 y del
tipo 3 ocupan 4 veces más en la me-
moria que las del tipo 0 y del tipo 1 ,
luego el ordenador no puede guardar
en su memoia más de 64 giguras
móviles de 16 filas x 16 columnas, y
habrá que numerarlas del 0 al 63.
Para que los mandos SPRITES no
resulten tan largos, hay varios trucos
que se pueden emplear. Puede hacer
en otras órdenes, por ejemplo, que la
varible A$ sea igual a la suma de las
ocho funciones CHR$ de la primera
subfigura, que B$ tenga las ocho de
la segunda, C$ de la tercera y D$ de
la cuarta, y así podrás teclear, como
sprite de las 16 filas x 16 columnas
con el número 27, por ejemplo:
SPRITES (27) - A$ + B$ + C$ + D$
y tu figura móvil quedará definida.
También puedes sustituir CHR$
por los caracteres entrecomillados
cuyo código en hexadecimal sea uno
de los datos. Por ejemplo, al definir
la gaviota, si sabemos que el carácter
número 55 hexadecimal, es decir el
número en decimal e la "U" mayúscu-
la, podemos teclear:
SPRITES (0) = CHRS (&H0) + CHR$
(&H0) + (&H22) + "IT + CHR$
(&H88) + + CHRS (&H8) + CHRS
(&H0) + CHRS (&H0)
y la figura móvil definidaseguirá sien-
do la gaviota, exactamente igual.
Al utilizar la segunda coordenada
de la orden SCREEN, te aconseja-
mos bastante prudencia, pues al selec-
cionar el tipo de figura móvil que
FA*T7í)/AT£,<2u£ yo
TEN&o UkJA fe* MAS
GWQfK Q\JÍ ¿A-TU/A
AQOÍ^ANMO
MALA (DLMEAJA I
1* voy A enSEÑM
YO LO ME ES [)Ñ
mame *
51 ¿AS PíEPtf^Sj
flV SA3ÍCJ
quieres utilizar, al mismo tiempo bo-
rra de la memoria absolutamente to-
das las figuras móviles que hubieras
definido previamente, aunque fueran
del mismo tipo que has selccionado.
Esto no sucede, sin embargo, con la
primera coordenada de la orden
SCREEN, por lo que puedes cambiar
de modo de pantalla (de texto a grá-
fico, de gráficos a texto, de gráficos
entre sí, e incluso llegar a SCREEN 0,
el modo de texto en que no se pue-
den usar figuras móviles) sin temor a
que tus figuras móviles se borren de
la memoria.
Movimiento Sprites
Para situar tus figuras móviles en
la pantalla y moverlas a continuación,
es conveniente que sepas algo más
sobre los planos de pantalla de los
que hablábamos antes.
El plano de dibujo principal se divi-
de en 192 filas x 256 columnas de
p/xe/s, numeradas, del 0 al 191 y del
0 a 255, apareciendo este plano ínte-
gro en la pantalla, pero no sucede lo
mismo con los planos de figura mó-
vil. Los planos de figura móvil se divi-
den en 256 filas x256 columnas de
p/xe/s, numeradas ambas del 0 al 255.
Al caber sólo en la pantalla 192 filas
de p/xe/s, hay una parte de los pla-
nos de la figura móvil que no apare-
cen en la pantalla y que va desde la
fila 192 hasta la fila 255 de p/xe/s.
Esta zona se halla oculta en el borde
inferior de la pantalla.
Como los p/xe/s de los planos de
figura móvil se hallan exactamente
en el mismo lugar que los p/xe/s de
plano principal (por ejemplo, el píxels
(27, 49) de cualquier plano de dibujo
de figuras móviles se superpone a pí-
xels (27, 49) en cualquier plano infe-
rior, incluido el plano prinipal. Vamos,
pues, a situar una figura móvil.
Si la gaviota que definimos en el
apartado anterior se mantienen en la-
memoria de tu ordenador (si no
vuélvela a definir) podemos situarla
en la pantalla. Antes de situarla, ten-
dremos que decidir en qué plano la
vamos a poner, en que p/xe/s y de
qué color. Decidimos al azar que la
situamos en el plano número 3, en el
cuadrado de p/xe/s con vértices
(100, 100), (107, 100), (107, 107) y
de color blanco (15). Para qe se vea,
pues de color blanco, hay que hacer
que el color del fondo sea distinto
color. Azul, por ejemplo. Por lo tanto
pon tu ordenador en SCREEN 1 y te-
clea:
10 color, 4, 4
20 put sprite 3, (100, 100), 15, 0
La línea 1 0 establece que el color
del fondo y de los bordes sea azul, y
a línea 20, utilizando el mando "PUT
SPRITE", sitúa la figura móvil tal y
como habíamos decidido. Tras un
mandato "PUT SPRITE", hay que indi-
car el plano donde se sitúa la figura
móvil, el vértice superior izquierdo
del cuadrado donde se sitúa, el co-
lor, y la figura móvil de que se trate
(la gaviota la numeramos con el spri-
te número 0).
Ahora te encontrarás con que tie-
nes una gaviota en medio de la pan-
talla y no se puede borrar, ni con
"BS", ni con "DELETE", ni con la or-
den "CLS": Pero sí se puede quitar de
dos maneras: poniéndola transparen-
te (color 0):
PUT SPRITE 3, (100, 100), 0,
0,
o poniendo otra gaviota en el mismo
plano de la figura móvil, pero en la
zona que no aparece en la pantalla,
como el cuadrado de vértice superior
(200,0):
PUT SPRITE 3 (200,0), 15,0
Te estarás preguntando por qué el
hecho de poner una gaviota fuera de
la pantalla ha hecho borrarse a la an-
terior, cuando lo lógico sería que per-
maneciesen dibujadas ambas, una
que no puede verse, fuera de la pan-
talla, y otra, la de antes en medio de
la pantalla. La respuesta es fácil, en
un plano de figura móvil, solo cabe
una figura móvil La que había en el
plano 3 era una gaviota en medio de
la pantalla, pero al decirle al ordena-
dor que me situará otra en el mismo
plano, pero fuera de la vista, lo ha
hecho, pero ha borrado a la gaviota
anterior, para tener sólo una figura
móvil.
Esta caracterítica de los planos de
figuras móviles limita la cantidad de
i figuras móviles que puede aparecer
en un instante de tiempo a 32, una
por cada plano de figura móvil, aun-
que haya definidas más de 32 figu-
MSX 33
ras móviles en la memoria del orde-
nador. Esto, lejos de ser una
desventaja, resulta muy beneficiosos
para crear el efecto de los dibujos
animados. Vamos a poner un ejem-
plo. La gaviota de antes va a ir volan-
do de un lado a otro de la pantalla.
Para ello necesitamos las dos posi-
ciones de la gaviota: la gaviota con
las alas levantadas y la gaviota con
las alas bajadas. La primera posición
ya está definida y la segunda posi-
ción es la figura 3. Definimos, antes
de nada, la segunda posición, por
ejemplo, como la figura móvil núme-
ro 1:
& B0000000O
& B00000000=
& B00000000=
& B0001010O
& B00101010=
& B01001001=
& B1 0000000=
& B00000000=
&H0
&H0
&H0
&H14
&H2A
&H49
=&H80
&H0
luego el programa será, suponiendo
que siga la otra gaviota en la memo-
ria el siguiente:
10 SPRITES$ (1) = CHR$ (&H0) +
CHRS$ (&H0) + CHR$ (&H14) +
CHR$ (&H2A) ++CHR$ (&H49) +
(&H80) + (&H0)
20 color, 4, 4: SCREEN 2
30 FORT = 0 TO 100 PUT SPRITE 3
(100,00), 15, TMOD 2:
FORL = IT050: NEXT: NEXT
Este programa solo hace batir las
alas a la gaviota, sin moverla. Para
ello pone la figura móvil a instalar en
función del resto de la división de la
variable del bucle T entre 2. Hemos
incluido un buce L ralentizador del
movimiento de la gaviota.
Vamos ahora a moverla por la pan-
talla. Cambia la orden 30 por la si-
guiente:
30 FOR T=1TO 200: PUT SPRITE 3,
(T, 100), 15, T MOD 2: FOR L = 1TO
50: NEXT: NEXT
y así verás que ti gaviota se desplaza
por la pantalla desde el punto (0, 0)
al (0, 200).
Te vamos a explicar ahora un fe-
nómeno que sucede con las figuras,
móviles, y que en inglés se llama
"wrap-Around". Cambia el bucle T
para que, en vez de ser de 1 a 200,
sea de 1 a 1000 (FORT = 1
TOL1000) cuando el bucle llega a vaJo
res como 300, 400.etc...,la gaviota
sigue aún viéndose. Esto sucede
porque al llegar al píxels (256,100) el
ordenador sitúa a Is figuras móviles
en el (0,100) y parece como si la ga-
viota comenzará de nuevo a atrave-
sar la pantalla. Esto también sucede
en vertical. Cambia la orden 30 por:
30 FORT = 0 TO 1000: PUT
SPRITE 3, (100, T) 15, TMOD
2: FOR L = 1TO50: NEXT:
NEXT
y sucederá algo parecido. La diferen-
cia entre el "Wrop-Around" vertical y
el horizontal es que en el vertical la
figura móvil tiene que atravesar la
zona oculta de su plano antes de lle-
gar al punto (100, 256) y a causa de
esto situarse en el punto (100,0).
Por último te diremos que hay un
solo inconveniente en la salida a pan-
talla de los sprítes MSX: no puede
hacer más de cuatro figuras móviles
en una misma línea horizontal. Si se
sitúan 5, sólo se podrán ver las cuatro
que se hallen en los cuatro planos de
figura móvil. Así si se hallan figuras
móviles de los planos 0, 2, 4, 5, 7, 9,
y 1 1 en la misma línea horizontal,
solo verán visibles las de los planos
0, 2, 4, y 5. Si una figura móvil se
sitúa alineada horizontalmente con
cuatro o más figuras móviles de pla-
nos superiores, no se verá, pero si se
halla al menos 1 píxels por debajo de
los demás será visible solo en parte,
de las rebanadas de píxels que se
hallen desplazadas de las demás.
J.M. Cavaníllas.
34 MSX
SVI-728 MSX-PIUS.
NO HAY QUIEN DE MAS:
UN EQUIPOEXCEPCIONAL,
A UN PRECIO DE EXCEPCION.
TODOS DE ACUERDO. "MSX": STANDARD MUNDIAL
COMPATIBLE
Este sería el primer adjetivo a destacar del ordenador]
SVI-728 MSX: su total compatibilidad con el sistema
standard mundial MSX.
ILIMITADO
Gracias a la amplia variedad de periféricos
disponibles (y todos compatibles MSX) el ordenador SVI-728 no tiene límites. Desde la
unidad de disco al cassette. Desde el cartucho de 80 columnas (para trabajar en
CP/M junto con un disco) al interface RS 232.
Y por si fuera poco otra posibilidad más.
El ordenador SVI-728 MSX es un equipo capaz de
convertirse en una estación de la red local LAN.
Todo listo para poder crecer. Y todo disponible ya.
Sin esperas ni demoras.
Infórmate en tu Concesionario Autorizado
Spectra video y comprueba la total
'modularidad* del sistema SVI-728.
Nacido para crecer.
Spectravideo.
La informática del futuro, hoy.
SVI
SPf CTRAVIOf O
KV1I
Algebra
ntes de entrar en definiciones
y explicaciones, que en lugar
de facilitar la lectura, la compli-
carían, iniciemos este artículo con
una breve historia del padre del álge-
bra que lleva su apellido. George
Boole, nacido en 1815, será, sin lu-
gar a dudas recordado por todos
los que, de una forma u otra, están
ligados a la profesión informática,
gracias a sus teorías y a sus libros,
ha sido posible entender la complica-
da lógica aristotélica. Desarrolló una
serie de símbolos, que utilizados en
combinación con otros elementos,
obtenían una serie de resultados. Es-
tos elementos y símbolos, los vere-
mos con las instrucciones que posee
el ordenador.
Es interesante saber que esta
rama matemática, es necesaria en-
tender a la perfección, ya que la
construcción de instrucciones con el
formato IF-THEN-ELSE, se verá be-
neficiado o perjudicado, en base a
nuestro conocimiento y saber hacer.
Las tablas de verdad son otra for-
ma de aplicar estos teoremas y estas
leyes. Pero empecemos viendo las
distintas instrucciones que posee el
MSX y que se utilizan con más o me-
nos frecuencia. Existen seis opera-
dores lógicos, que son NOT, AND,
OR, WOR, EQV e IMP. Los operado-
res lógicos son elementos, que colo-
cados entre dos condiciones (o pro-
posiciones) permiten una respuesta
del tipo TRUE o FALSE (verdadero
falso, 1 ó 0, etc.).
Este tipo de respuesta es debido
a que el ordenador está formado por
un conjunto de interrupciones que
sólo pueden estar encendidos o apa-
gados. Una combinación de interrup-
tores es lo que hemos denominado
en anteriores artículos como bytes (8
interruptores). La lógica del ordena-
dor, por lo menos, lo que hace que
la máquina razone, es este conjunto
de reglas que conforman el algebra
de Boole.
Una vez entendido que el meca-
nismo interno de la máquina se rige
por impulsos eléctricos y por unas
determinadas reglas, vamos a expli-
car los distintos operadores lógicos y
sus tablas de verdad.
En orden de importancia, pode-
mos destacar los tres operadores
más comocidos por todos los lecto-
res. Estos son el OR, AND y NOT
(que significa O, Y y negación), aun-
que el MSX posee otros tres, XOR,
IMP y EQV, que se pueden expresar
como combinaciones de los tres pri-
meros.
En primer lugar, explicaremos los
diversos elementos que componen
este Algebra individualmente y sus
características principales, dejando
los casos prácticos para el final. Es
importante entender el buen funcio-
namiento de estos elementos, que
además nos permitirán realizar autén-
ticas diabluras a la hora de complicar
las sentencias condicionales IF-
THEN-ELSE. Iniciemos el estudio de
la tabla por el caso más sencillo, se
trata del operador NOT.
Este es la negación de cualquier
De la mano de George
Boole, se inició una
rama de la matemática
imprescindible para el
buen desarrollo de
aplicaciones.
elemento que venga a continuación,
su tabla es;
X NOT X
0 1
1 0
Como podemos observar, con
una condición (X) sólo pueden ocu-
rrir dos casos, que sea cierta (1) o
falsa (0), por lo que al aplicar este
operador, obtendremos como resul-
tado el contrario del valor inicial.
Continuemos con el operador si-
guiente en orden de importancia y
que nuestros lectores conocerán de
haberlo visto en las instrucciones IF.
Permite comparar dos condiciones
y ejecutar una acción, caso de que
el resultado sea cierto. Como es ob-
vio, se necesitan dos argumentos o
condiciones que denominaremos X e
Y, que pueden tomar hasta un total
de cuatro valores que :
X Y X AND Y
0 0 0
0 1 0
1 0 0
1 1 1
Según la tabla, una instrucción del
tipo X AND Y, sólo será cierta cuan-
do las condiciones sean ciertas, es
decir, "si ocurre la condición X" y la
condición Y".
Bien, es hora de introducir un
ejemplo que ayudará a aclarar estos
conceptos.
En los programas, a veces nos en-
contramos con instrucciones IF con
el siguiente formato:
810 IF RC 3 AND CC
THEN 1040
1
Si la destripamos un poco y aplica-
mos lo visto hasta el momento, po-
demos darnos cuenta de que el pro-
grama SOLO ejecutará la línea 1040
en el caso de que RC sea mayor que
3 (condición X) y que CC sea distinto
de 1 (condición Y). Es decir, que si
observamos la tabla, equivaldría al úl-
timo caso. De nada sirve que se
36 MSX
Elemento fundamental en el desarrollo de
aplicaciones y ayuda primordial en la toma de
decisiones, el Algebra de Boole, se convierte,
con el MSX en un protagonista digno de tener en
cuenta. Sobre todo, con la posibilidad de poder
implementar cualquier función de este álgebra,
gracias a una serie de instrucciones que
comentaremos a continuación.
cumpla la primera condición y la se-
gunda no, o que se cumpla la segun-
da pero no la primera,' menos aún si
no se cumple alguna de las dos.
Comprendido esto, pasemos al últi-
mo caso de los tres lógicos, OR.
Este al igual que el anterior, compara
entre entre dos condiciones, la posi-
bilidad de que una (X) y otra (Y) condi-
ción sea cierta. Su tabla es:
X
o
o
1
1
Y
0
1
o
1
X OR Y
0
1
1
1
Si la comparamos con el caso an-
terior, observamos tres posibilidades
en que la condición final sea cierta.
Aquí sólo basta que una de las dos
condiciones sea verdadera para
quién el resultado también lo sea.
Veamos el ejemplo anterior y sustitu-
yamos el operador lógico AND por
OR.
810 IF RC 3 OR CC 1
THEN 1040
En este caso, para ejecutar la línea
1 040 basta con que una de las con-
diciones sea verdadera, que RC sea
mayor que 3 o que CC sea distinto
de 1.
Antes de explicar el siguiente ope-
rador, volvamos a ver las tablas.
Quiero hacer constar que estos ele-
mentos del Algebra de Boole, tienen
sus honónimos en otras operaciones.
¿Por qué no sustituís el operador ló-
gico OR por el signo V y el opera-
dor lógico AD por el signo V y desa-
rrolladas las tablas de nuevo? ¿Qué
resultado obtendréis al efectuar el
cambio?
Las respuestas a estas dos pre-
guntas las dejamos a manos de los
lectores, de esta forma podréis con-
venceros de que todas las ramas de
las matemáticas se interelacionan.
Pues bien, hasta aquí hemos visto
los tres operadores más importantes
y más populares, en los que a pro-
gramación se refiere. Los vemos
continuamente en los programas y
rutinas. Los que vamos a estudiar a
continuación, no son tan extendidos
ni tan conocidos como las anteriores,
pero, son tres elementos que carac-
terizan y potencian, a la vez que ele-
van el nivel, de nuestro ordenador
MSX.
Estos tres operadores lógicos son:
XOR, IMP y EQV. La primera se de-
nomina OR-exclusiva, la segunda es
la implementación y la rutina es la
función de equivalencia.
Vamos a realizar un pequeño pa-
rentésis a estas alturas, para reiterar
al lector, y perdonar la insisitencia,
que estos operadores ayudarán a
potenciar la construcción de la sen-
tencia IF-THEN-ELSE. Más adelan-
te y para cerrar este artículo, vere-
mos unos ejmplos y explicaremos al-
gunos propiedades del Algebra de
Boole.
posibilidades de este operador.
Por ejemplo, podemos tener una
instrucción del tipo:
IF (A 132 AND (NOT
c$ "pepe")) OR ((NOT
a 132) AND c$ "pepe")
THEN GO TO 1399
y mediante la aplicación de este ope-
rador reducirla a:
IF a 132 XOR c$
THEN GO TO 1399
"pepe"
Esto es posible gracias a la aplica-
ción de la tabla de esta función, que
es:
X
o
o
1
1
Y
0
1
0
1
X XOR
0
1
1
0
Las tablas de verdad,
son otra forma de
aplicar los teoremas y
las leyes de Algebra
de Boole.
Continuando con estos tres opera-
dores, iniciemos esta segunda eta-
pa con el XOR.
La función que desarrolla este
operador es la misma que si utiliza-
mos los operadores AND, OR y NOT.
Es decir, que si realizamos la tabla
de verdad de la función X XOR Y,
obtendremos como resultado una ta-
bla que será igual a la que se obtie-
nen haciendo la tabla de: (X AND
(NOT Y)) OR ((NOT X) AND Y). Esto
podrá sonar a Chino, pero si sustituí-
mos las condiciones X e Y, por valo-
res auténticos, es decir, funciones
del tipo: A 132 o incluso C$ "pepe",
podremos comprobar las inmensas
Con esta tabla y las que hemos
visto anteriormente, los lectores po-
drán realizar las tablas de las dos
funciones expuestas anteriormente y
comprobar su igualdad.
A continuación, hablaremos de la
función de equivalencia, que en el
BASIC MSX se representa por EQV.
En esta, al contrario que la anterior,
tiene la particularidad de tomar valo-
res verdaderos (1) cuando las dos
condiciones son ciertas, es decir,
cuando X e Y sean iguales a 1 . Po-
demos deducir, que su tabla de ver-
dad será:
X Y 3 EQV Y
MSX 37
Algebra de Boole
0
0
1
0
1
0
1
0
0
1
1
1
Por último, queda por comentar el
operador, IMP. No tiene muchas apli-
caciones, por lo que se verá pocas
veces. De cualquier manera, esto no
es razón para no comentarlo.
La función IMP, es la implementa-
ción. Esta equivale a hallar la tabla de
verdad de la negación del primer
operador y a continuación, realizar la
función OR entre el resultado.
Su resultado es la siguiente:
X
o
o
1
1
Y
0
1
o
1
IMP Y
1
1
0
1
Pues bien, aquí acaba una intro-
ducción de los operadores lógicos.
Hagamos ahora, un sumario de las
tablas antes de entrar en más mate-
ria.
Sumario de los opera-
dores lógicos del BA-
SIC MSX
X Y AND OR XOR EQV IMP
00 0 0 0 1 1
0 10 110 1
10 0 1 10 0
11110 11
Ya hemos visto todos los operado-
res lógicos que posee el BASIC
MSX, pero la explicación se queda im-
completa si no vemos algunas rela-
ciones importantes que nos podre-
mos encontrar en los programas, y
como no, poderlas realizar en los
nuestros. Todas estas relaciones se
pueden verificar mediante las tablas
de verdad, de las que tanto hemos
hablado en. este artículo.
En total son 7 casos que podemos
utilizar y que simplificarán el desarro-
llo de los programas. Empezaremos
con el operador OR.
1- X OR 0 = X
2- X OR X = X
3- X OR X OR X OR... = X
4- X OR (NOT X) = 1
5- X OR 1 = 1
6- X OR (X AND Y) = X
7- X OR ((NOT X) AND Y) - X
OR Y
Las relaciones con el operador
AND, son similares y son las siguien-
tes:
1- X AND 0 = 0
2- X AND X = X
3- X AND X AND X AND... = X
4- X AND (NOT X) - 0
5- X AND 1 = X
6- X AND (X AND Y) = X AND
Y
7- X AND ((NOT X) AND Y) -
0
todas las relaciones se verifican
por el procedimiento explicado ante-
riormente. Si queremos hacerlo por
nuestra cuenta, no olvidar que tanto
X como Y, son expresiones matemá-
ticas o lógicas. Estas también pue-
den ser números solamente, por lo
Los operadores
lógicos, AND, OR y
NOT, junto con los
números binarios, 0 y
1 , forman la base de
toda la circuitería
interna de un
ordenador.
que, para empezar a comprender las
tablas haremos el siguiente ejerci-
cio.
Tomemos dos valores numéricos
totalmente aleatorios, que pueden
ser el 145 y el 58. Ahora comprobe-
mos los catorce casos que se han
explicado anteriormente, siendo la X
el valor 145 y la Y el 58. A continua-
ción y sustituyendo dichos valores
en las expresiones comprobemos
los resultados. Haremos 5 ejemplos
y dejaremos al lector la ejecución del
resto hasta los catorce que lo com-
ponen.
El comando PRINT nos ayudará en
los ejemplos.
Estos son algunas de las operacio-
nes posibles. Siguiendo la pauta de
la revista, queremos que el lector sea
partícipe directo de la lectura y desa-
rrollo de los artículos. Por esta razón,
dejamos en sus manos completar la
totalidad de los ejemplos.
De la misma forma que hemos to-
mado valores numéricos en las ex-
presiones X e Y, también podríamos
haber puesto cualquier otra expre-
sión, del tipo a$="alfa" y"b =15.
Este ejemplo está realizado con nú-
meros puesto que es más fácil de
explicar y entender.
Para acabar, veremos como fun-
cionan estos operadores dentro del
contexto de la instrucción IF.
Estudiar el funcionamiento de esta
instrucción no es el objeto de este
artículo, por lo que nos profundizare-
mos en el tema.
La sintaxis de esta instrucción es:
IF (condición) THEN (acción)
En este caso, la condición puede
ser cualquier combinación de núme-
ros, letras o números y letras. En es-
tas condiciones se usan los operado-
res aritméticos, que estaremos acos-
tumbrados a ver y son: , , =,
= y =. Dentro de estas
condiciones podemos utilizar tam-
bién funciones matemáticas del co-
seno, seno, arctg, etc. El resultado
de estas condiciones, puede ser
cualquiera, como corresponde a las
comparaciones. Pero existen otras
comparaciones que se efectúan con
38 MSX
El BASIC MSX
implementa un
completo juego de
instrucciones, que
desde el AND hasta
EQV, para manejar el
Algebra de Boole en
toda su extensión.
expresiones, donde no se comparan
con ningún valor en concreto y cuyo
resultado, sólo puede ser cierto
(TRUE) o falso (FALSE). La sintaxis
de la sentencia IF con este formato
es:
IF (expresión) THEN (acción)
Este ejemplo se verá mejor con un
ejemplo.
Muchas veces nos hemos visto en
la situación de tener que comprobar
si el resultado de una variable es 0 o
no. Para ello tenemos esta instruc-
ción, donde sustituyendo la expre-
sión por la variable, obtendremos
como resultado 0 ó 1 , según la res-
puesta sea falsa o cierta respectiva-
mente.
Por ejemplo, queremos determinar
si la variable X de cualquier progra-
ma es 0, introduciremos la siguiente
expresión:
IF X THEN 2340
Con ella podremos saber si, efecti-
vamente, la variable en cuestión vale
0 ó 1/
Con esta última explicación, finali-
zaremos la introducción dedicada al
Algebra de Boole. Por supuesto que
podríamos haber explicado más e in-
cluso, haber profundizado más en la
materia, pero esto nos llevaría a ex-
tendernos en demasía y no es cues-
tión dedicar tantas páginas a este
tema. Nuestra misión ha sido la de
describir otra herramienta más, como
es el Algebra de Boole, para realizar
programas junto con los comandos
que la implementan. Ahora sólo que-
da, aunque suene repetitivo, que el
lector, aplique estos conocimientos en
la creación de sus programas.
PRINT 145 AND ((NOT 145) AND 58)
PRINT 145 OR (145 AND 58)
PRINT 58 AND 0
PRINT 59 AND 1
PRINT 145 AND ((NOT 145) AND 58)
el resultado será
145
145
0
58
0
TE AYUDA EN EL COLEGIO
SOFTWARE EDUCATIVO ADAPTADO A TUS LIBROS DEL COLEGIO. EN DISKETE 0 CASSETTE
ANAYA, BRUÑO, SANTILLANA, EVEREST, VIVES, SM, ETC
TODAS LAS EDITORIALES - TODOS LOS CURSOS - TODAS LAS ASIGNATURAS
Aulas de informática para colegios
Venta ó alquiler de equipos
Clases impartidas por personal cualiticado.
* HB 55 y televisor TRINITON - 82.329 Pts.
ó 36 cuotas de 2.835 Pts. al mes
* HB 75 y televisor TRINITON - 98.320 Pts.
ó 36 cuotas de 3.387 Pts. al mes
eN TODAJSP*!**
Disponible también para AMSTRAD, PC y compatibles.
SOLICITA INFORMACION
COLEGIO JOVELLANOS: Avda. Monforte de Lemos, 155 y 153 - Tino.: 201.38.03 - 28029 MADRID
¿Quién no ha oído hablar del Al-
gebra de Boole?* Siendo una de la
más importantes ramas de las mate-
máticas y sobre todo, herramienta
ejemplar en el diseño de tablas de
verdad y de circuitos lógicos, el Alge-
bra de Boole, ha permitido a progra-
madores y a diseñadores de circuite-
ria, trabajar con más facilidad y
soltura.
En programación, se usa para
ayudar a entender la instrucción IF.
No es que esta sentencia sea
difícil, sólo que cuando se complica
mediante la incorporación de varios
operadores lógicos, a veces nos las
vemos y deseamos para compren-
derlas.
Estos operadores, a los que de-
bemos estar acostumbrados son:
AND, OR, NOT, NAND y XOR, los
cuales tienen su significado que
son: Y, O, NO, Y negada y Or-
exclusiva.
Una de estas tiene un desarrollo
particular y único. A su vez, cada
una de ellas tiene una tabla de ver-
dad que le caracteriza.
Este programa mostrará todas
las tablas posibles que se pueden
realizar con esos operadores lógi-
cos y con un total de cuatro varia-
bles.
LOS JUEGOS ELECTRONICOS
40 MSX
5 CLS
10 PRINT "introduce el numero de variables a utilizar ( hasta 4 ) "
20 INPUT V
30 GOSUB 1000
40 PRINT: PRINT "introduce la función lógica a real i- zar. Puedes elegir entre A
ND, NAND , OR, ÑOR y XOR"
45 INPUT F$: CLS
46 FOR N=l Tü V: PRINT CHR* < N+64 ) +" " ; :NEXT N
48 PRINT ,F*:PRINT " »
50 IFLEFTSÍ F*,l)="n" THEN NEG=1
60 IF F$="and" ÜR F*="nand" THEN GOTO 2000
70 IF F*="or" OR F*="nor" THEN GOTO 3000
80 IF F$="xor" THEN GOTO 4000
90 PRINT "esa función no la conozco. Introduce otra que si conozca" :GOTO 40
1000 REM contruccion de tabla de variables
1005 D=2' (V) : DIM M*(D)
1010 FOR N"¿=1 TO D
1020 m*<n:o=bin*<nx-i>
1030 NEXT
1040 REM normalización
1050 FOR N=l TO D
1060 L=LEN <M*<N)):IF L=V THEN GOTO 1080 ELSE FOR K=L+1 TO V :M* (N) ="0"+M* <N) :NE
XT K
1070 NEXT
1080 RETURN
2000 REM rutina and-nand
2010 X=2^V-1
2015 GOSUB 7000
2035 GOTO 6000
3000 REM -función or-nor
3010 X=0: GOSUB 7000
3020 GOTO 6000
4000 REM función xor
4010 FOR N=l TO D
4015 PR=VAL ( <"8<b"+M$<N> ) ) :X=2^V-1
4020 S=l :NEG=0
4040 IF PR=0 OR PR=X THEN S=0
4050 GOSUB 5000
4055 NEXT N: GOTO 6000
5000 REM rutina de presentación
5005 IF NEG=1 THEN SWAP S,S1
5006 IF F*="or" OR F*="nor" THEN SWAP S,S1
5010 Z*=M*<N): FOR Q=l TO V:PRINTMID*< Z*,Q,1>+" "; :NEXT Q: PR I NT f S : RETURN
6000 LOCATE 0,21: PRINT "quieres otra <s/n)":INPUT R*:IF R**"s" THEN RUN ELSE CL
S:STOP
7000 FOR N«l TO D
7010 S=0:S1=1
7020 IF X= VAL ( ( U 8cb"+M$ (N) ) ) THEN S«l iSl=0
7030 GOSUB 5000
7040 NEXT N
7050 RETURN
Los visitantes en Madrid
Año; 2010. Lugar; España, con-
cretamente Madrid. Los visitantes
intentar reducir a las fuerzas rebel-
des, pero la máxima concentración
de fuerzas ^e encuentra cerca de
Torrespaña. Estás al mando de un
grupo de combatientes que tienen
que eliminar el máximo número de
extranjeros posibles.
Para ello, no hay más remedio que
sustituir la antena parabólica que se
utiliza en las transmisiones, por un
cañón (este se encuentra dentro de
la antena, para disimularlo de los
ojos ajenos).
Hay varios tipos de naves, cada
cual con su puntuación, consigue el
recordé que aún nadie tiene. Para
mover la antena, usa las teclas del
cursor (izquierda/derecha) y dispara
con la barra espaciadora.
No os hagáis ilusiones, ya que
como buenos lagartos, estos se re-
producen constantemente, por lo
que el ataque será eterno. En este
caso, la suerte no es necesaria, ya
que aunque la tengas de cara, no
servirá de mucho. Lo que sí necesita-
rás es buena puntería. ¡Qué la fuerza
te acompañe!
LOS JUEGOS ELECTRONICOS
42 MSX
10 REM LOS VISITANTES EN MADRID
28 REM
30 COLOR 1 ,0,4
40 SCREEN 1,2,0
50 CLEAR 1000
60 DEFSNG A
70 DEFINT B-R,T-Z
80 DEFSTR S
90* KEY OFF
100 SPRITE OFF
110 DIM SC(7) ,ST(8)
120 REM AH=100
130 GOSUB 2240
140 SPRITE* ( 10) =S1
150 SPRITE* (11 )=S2
160 REM Instrucciones
170 FOR 1=0 TO 9
180 PUTSPRITE I , (255,192) ,0,1
190 NEXT I
200 CLS
210 S=" LOS VISITANTES EN MADRID"
220 PRINT S
230 S=" "
240 PRINT: PRINT: PRINT N
250 S="Las teclas del cursor giran"
260 PRINT S
270 S="la antena a la izq/dcha."
280 PRINT S
290 S="Dispara con el espacio."
300 PRINT S
310 PRINT :PRINT :PRINT
320 PUTSPRITE 10 , (40 ,78) ,3 , 10
330 S=" 50 Puntos"
340 PRINT S
350 PRINT: PRINT
360 PUTSPRITE 1 1 , (40 , 102) ,5 , 1 1
370 PRINT S
380 PRINT: PRINT
390 PUTSPRITE 8 , (40 , 1 26) ,9 ,8
400 S=" 100 Puntos"
410 PRINT S
420 PRINT : PRINT : PRINT : PRINT
430 S="Pulsa una tecla para empezar"
440 PRINT S;
450 S=INPUT$(1)
460 PUTSPRITE 8 , (40 ,208) ,0 ,8
470 PUTSPRITE 10 , (40 ,208) ,0 , 10
480 CLS
490 REM Dibuja la ciudad
500 CLS
510 SGUND 7, &B 10 11 10(30
520 LOCATE 0,24
530 FOR 1=0 TO 7
540 PRINT SC(I)
550 NEXT I
560 FGR 1=0 TO 6 STEP 6
570 FOR J=0 TO 1
580 LOCATE 6+1 ,2+J+I
590 FOR K=232 TO 238
600 PRINT CHR*(K+7*J) ;
610 NEXT K,J,I
620 LOCATE 0,0
630 PRINT "Rec
640 PRINT USING"#######" ;AH
650 AP=0
660 CC=129
670 REM Creación de la estatua
680 SPRITE*(4)=ST(4)
690 XS=128
700 YS=143
710 REM
720 REM
730 PUT SPRITE 0 , ( 1 24 , 1 59) , 1 5 , 1
740 PUT SPRITE1 , (124,143) ,15,2
750 PUT SPRITE2, (125,168) ,15,0
760 REM NEXT
770 REM Creación de los sprites
780 CL=1
790 0S=-4
800 LOCATE 15,0
810 PRINT "Jug . :" ;
820 PRINT US ING "#######" ;AP
830 S=SPRITE$(7)
840 IF S=S1 THEN S=S2 ELSE S=S1
850 SPRITE* (7) =S
860 XI =255
870 YI=16
880 CL=CL+2
890 IF CL>9 THEN CL=3
900 REM Movimiento del invasor
910 XI=XI+OS
920 I=OS
930 IF XK-15 THEN OS=-OS
940 IF XI>255-0S THEN OS=-OS
950 IF OSOI THEN YI = YI+8
960 PUTSPRITE 7 , (XI ,YI > ,CL,7
970 IF YIM82 THEN 2140
980 IF Y I< 1 1 2 THEN 1110
990 I = ( Y I AND 24B)/8*32+32
1000 1=1+ (XI AND 248) /8
LOS JUEGOS ELECTRONICOS
44 MSX
1010 I=?/H 1800+1
1020 IF VPEEK<I)=32 THEN 1060
1030 VPOKE I ,32
1040 CC=CC-Í
1050 IF CC=0 THEN 2140
1060 1=1+3
1070 IF VPEEKU)=32 THEN 1110
1080 VPOKE I ,32
1090 CC=CC-1
1100 IF CC=0 THEN 2140
1110 IF B THEN 1190
1120 IF XI < 4 OR X I >220 THEN 1360
1130 R=RND (-TIME) #4
1140 IF R THEN 1360
1150 REM Trayectoria del proyectil
1160 B=l
1170 XB=XI+8
1180 YB=YI+8
1190 YB=YB+6
1200 IF YB>191 THEN B=0
1210 PUTSPRITE 8, (XB,YB) ,CL,8
1220 I=(XB+5 AND 248) /8
1230 J=(YB+4 AND 248)/8*32+I
1240 J=2 < H1800+.J
1250 K=VPEEK(J)
1260 IF K<224 OR K >227 THEN 1360
1270 VPOKE J,32
1280 PUTSPRITE 8 , ( XB , 192) ,CL ,8
1290 PUTSPRITE 9 , ( XB-3 , YB-3) , 1 ,9
1300 GOSUB 2 700
1310 'YB=192
1320 CC=CC-1
1330 IF CC THEN 1200
1340 BOTO 2140
1350 REM Mueve el cursor
1360 FOR 1=0 TO 2
1370 J=STICK(I)
1380 IF J THEN 1=2
1390 S=INKEY*
1400 NEXT I
1410 T=0
1420 REM Mueve la antorcha
1430 XS=XS+(2 AND XS<136 AND J=3)
1440 XS=XS-<2 AND XS>120 AND J=7)
1450 SPRITE*(4)=ST( (XS-120) /2)
1460 PUTSPRITE 4 , ( 1 23 , 1 39 ) , 1 5 ,4
1470 YS=143+ABS(XS-128)
1480 IF F THEN 1640
1490 FOR 1=0 TO 2
1500 T=STRIG(I)
151® IF T THEN 1=2
1520 S=INKEY*
1530 NEXT I
1540 IF T=lZi THEN 1690
1550 SOUND 0,100
1560 SGUND 12,20
1570 SOUND 13,3
1580 H=XS-128
1590 V=-<8--ABS<H) )
1600 F=l
1610 REM
1620 REM
1630 REM
1640 I=X>0 AND X<255 AND Y>YI
1650 IF I THEN 1710
1660 F=0
1670 H=0
1680 V=0
1690 X = XS-5
1700 Y=YS-13
1710 X=X+H
1720 Y=Y+V
1730 PUTSPRITE 6, (X, Y), 15, 6
1740 GOSUB 1800
1750 IF T=0 THEN 910
1760 SDUND 0,0
1770 GOSUB 2900
1780 GOTO 910
1790 REM Detecta la colisión
1800 IF F=0 THEN RETURN
1810 I=ABS<Y-YI)
1820 J=ABS<X"XI)
1830 K=l
1840 IF I<5 AND J<8 THEN 1890
1850 I=ABS(Y-YB)
1860 J=ABS(X-XB)
1870 IF I>8 OR J>4 THEN RETURN
1880 K=0
1890 PUTSPRITE 6 , ( XS , YS) , 15 ,6
1900 F=0
1910 H=0
1920 V=0
1930 X=XS
1940 Y=YS
1950 IF K THEN 2070
1960 PUTSPRITE 8 , < XB , 192) ,CL ,8
1970 PUlSPRilE 9, <Xb~3, VL< -3) ,LL,9
1980 YB=192
1990 GOSUB 2700
2000 B=0
LOS JUEGOS ELECTRONICOS
46 MSX
2010 AP=AP+1©0
2(2120 IF AP>»250000! THEN AP«INT <AP/lfiM9)
2030 LOCATE 22,0
2040 LOCATE 22,0:PRINT AP
2050 GOSUB 2780
2060 RETURN
2070 PUTSPRITE 7 , (255 , 16) ,CL ,7
2080 PUTSPRITE 9 , < X I , Y 1-4) ,CL ,9
2090 GOSUB 2700
2100 AP=APh50
2110 GOSUB 2780
2120 RETURN 790
2130 REM Fin de), juego
2140 BEEP
2150 FOR 1=0 TO 10
2160 VDP(7)=ÍB
2170 FOR ,3=0 TO 100
2180 NEXT J
2190 VDP (7) =4
2200 FOR J=0 TO 100
2210 NEXT J,I
2220 GOTO 170
2230 REM Define la ciudad y las nubes
2240 RESTORE
2250 FOR 1=0 TO 31
2260 READ 3
2270 VPOKE 1792+1 ,J
2280 NEXT I
2290 VPOKE 8220,177
2300 FOR 1=0 TO 111
2310 READ J
2320 VPOKE 1856+1 , J
2330 NEXT I
2340 VPOKE 8221 ,240
2350 VPOKE 8222,240
2360 FOR 1=0 TO 7
2370 FOR J=0 TO 27
2380 READ K
2390 R-RND(-TIME) #4
2400 K=32 OR 224+R AND -K
2410 SC ( I ) =SC ( I ) +CHRÍ ( K )
2420 NEXT 3,1
2430 GOTO 2510
2440 REM Define los Sprites
2450 SP=""
2460 FOR ,1=0 TO 31
2470 READ S
2480 SP=SP+CHRt ( VAL ( "&H"+S) )
2490 NEXT J
2500 RETURN
2510 FOR 1=0 Tü 2
2520 GOSUB 2450
2530 SPRITE*(I)=SP
2540 NEXT I
2550 GOSUB 2450
2560 S1=SP
2570 GOSUB 2450
2580 S2=SP
2590 FOR 1=6 TO 9
2600 IF 1=7 THEN NEXT
2610 GOSUB 2450
2620 SPRT TF$ ( I ) =SP
2630 NEXT I
2640 FOR 1=0 Tü 8
2650 GOSUB 2450
2660 ST(I)=SP
2670 NEXT I
2680 GOTO 2780
2690 REH Explosión
2700 SOUND 0,0
2710 SOUND 3,0
2720 SOUND 7 ,?/B101 10000
2730 SOUND 12,50
2740 SOUND 13,3
2750 FOR 1=0 TO 500
2760 NEXT I
2770 PUTSPRITE 9 , (255 ,208) , 1 ,9
2780 SOUND 0,0
2790 SOUND 1 ,0
2800 SOUND 2,0
2810 SOUND 3,1
2820 SOUND 4,0
2830 SOUND 5,0
2840 SOUND 6,255 ,
2850 SOUND 7 , &B 1 0 1 1 1 000
2860 SOUND 8,16
2870 SOUND 9,16
2880 SOUND 10,0
2890 SOUND 11,0
2900 SOUND 12,8
2910 SOUND 13,14
2920 RETURN
2930 REM Datos del programa
2940 DATA 0,96,96,0,0,0,0,0
2950 DATA 0,6,6,0,0,0,0,0
2960 DATA 0,0,0,0,0,96,96,0
2970 DATA 0,0,0,0,0,6,6,0
2980 DATA 0,0,0,0,0,0,3,15
2990 DATA 0,0,0,3,15,15,247,251
3000 DATA 0,0,62,255,255,255,255
3010 DATA 255,15,255,127,191,223
LOS JUEGOS ELECTRONICOS
48 MSX
223,223,
188,224,
X.
,255,
255,255,
2D-.I ,1o
0 ,0
,0,12
8,240,63
, ¿.-'-1
*
255
,0,0,
0 ,0 ,0 ,0 ,
192
,31 ,63,63,63,
31,15
3,0
,255,
254 , 254 ,
Z-JJ
251
,247,
129,0,25
5,255
255
,255,
255,254 ,
240,0
251
,247,
215,185,
127
255
,31
), 247, 241
,237
251
,255,
255,255,
248
223
,175.
247,247,
247
227
,128,
0 , 240 , 24H
248
,248.
,224,128,
0,0
. 1
,E0,E0,E0
5,E0 ,E0
,C0
3540
3550
3560
3570
3580
3590
3600
3610
3620
3630
3640
3650
3660
3670
3680
3690
3700
3710
3720
3730
3740
3750
3760
3770
3780
3790
3800
3810
3820
3830
3840
3850
3860
3870
3880
3890
3900
3910
3920
3930
3940
3950
3960
3970
3980
3990
4000
4010
4020
4030
4040
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
i ,0,0,0,0,0,0,0
c0,c0,ejZi,-f0,58 ,,-fc ,fe,e0
e0, 0,0, 0,0, 0,0,0
0,0,0,0,0,0,0,1
1 ,0,0,0,0,0,0,0
0 ,0 ,0,0,0 ,0 ,0 ,80
80,0,0,0,0,0,0,0
80,40
40,80
40 ,80
80,40
0,b ,14, Id ,2a ,35,52,3
34 ,4a
80, e8
f7,47
0 ,0,0
78 , 10
0,0,0
0
0
73
0
C0
0
1
0
0
,0
:0
,0
,0
>®
C0 ,C0
I? 1
.0
,0
0
1
0
80
0
3
0
,0,0,0,0,0,0,0
80 ,C0
3
1
C0 ,C0
80,80
0
3
0
21 ,le
0 ,0 ,0
0,0,0
0,0,0
55,38
14, d2
8b ,f 3
0,10, 78, 7f ,7-f
0,0
0,0
0,0
0,8
0 ,0
0,0
6, e
0,0
0,0
0,0
7, -f
0,0
80 ,C0
0,0
1,1
0,0
G0 ,80
0,0
1 ,3
0,0
+ 0 ,e0
,0,0,0,0,0,0,0
0 ,0,0
0,0,0
0 ,60 ,
80,0,0,0,0,0,0,0
0 ,0 ,0
0,0,0
Ce ,0 ,0 ,0 ,0 ,0 ,0 ,0
0 ,0 ,0
0 ,0 ,0
0,0,8
0
0
0
le
0
0
/0
le, le, le, 21
0 ,0,0
0,0 ,0
0,0,0
17,9,6,0
2f ,33,ed ,a5
95,2e,f0,0
0,0,0
e0 ,e0
0,0
,3e,7f
0,0
0,0,0
le, i-f ,3
0,0
0,80
0,0,0
3,1
0,0
0 ,0 ,80
0,0,0
1,1
0,0
80,80,80,80
0,0,0
0,1
0,0
f 0 ,C0 ,C0 ,80
0,1
0,0
78 ,78 ,c0
0 ,0
0,0
0,0,10,38,7c ,fe
7,7
0,0
le , -fe , -fe
le ,8 ,0 ,0,0,0,0 ,0
LOS JUEGOS ELECTRONICOS
50 MSX
La
pianola
Si Beethoven levantara la cabeza,
seguro que diría barbaridades, algo
así como que estarnos estropeando
la música, etc.
Pero a estas alturas, el lector ten-
drá algún que otro conocimiento so-
bre las posibilidades musicales del
ordenador. De cualquier manera, si
aún cree que ha visto poco, teclea
este programa.
En el programa se dibuja un tecla-
do de una pianola con buenas y di-
versas variantes musicales.
También incorpora un completo
juego de instrucciones y totalmente
auto explicativo, por lo que no hará
falta comentar muy a fondo.
Lo mejor que puede hacer es
practicar con los diversos tonos, te-
clas, duraciones, etc.
MSX 51
PIANO /"
Id REM LA PI ANGLA
20 CLS
30 COLOR 7,1,1
40 SCREEN3
50 OPEN"GRP:"AS 1
60 PRESET (65,60) :PRINT#1 , "P I ANO"
70 KEY OFF
80 FOR 1 = 1 TO 2000.-NEXT I
90 SCREEN0
100 LOCATE12,10:PRINT".8
110 LOCATE25,0:PRINT"5B96 Octetos"
120 PLAY "T255CPEC0EEF6EFGGAGFECGAGFECC03G04C"
130 FOR 1=1 10 2000:COLOR,4:CQLOR,2:NFXT
140 COLOR 7,1,1 :BEEP
150 CLS :LOCATE0 , 1 0 : INPUT" Deseas ver las instrucciones" ;RÍ
160 TF R*="s" OR R$="S" THEN 1170 ELSE 170
170 SCREEN2
180 REM * Cl AVES *
190 LINE (23, 120) -(256,192) ,15,BF
200 LINE (36. 120) (36,192) ,4
210 l. INE(49,1?0)
220 LINE (62. 120)
230 L INF (75
-(49,192) ,4
(62,192) ,4
.120) -(75,192) ,4
240 LINE (88, 120) -(88,192) « 4
250 LINE (J 01 .120) -(101 ,192) ,4
260 L I NE ( l 1 4 , 1 20 > ( 1 1 4 , 1 92 ) ,4
270 L I NE ( 1 27 , 1 20 ) - ( 1 ?7 , 1 92 ) ,4
280 LINE ( 140, 1 20> -( 140,192) ,4
290 L I NE ( 1 53 , 1 20 ) - ( 1 53 , 1 92) ,4
300 I INE ( 166, 120) ( 166, 192) ,4
310 LINE ( 1 79,120) -( 179,192) ,4
320 LINF ( 192.120) -( 192,192) ,4
,120) - (205 ,192) ,4
(218,192) ,4
(231 ,192) ,4
,*20J (244 , 1 92) ,4
. 1 20) - (40,160) ,4,BF
, 120) - (53, 160) ,4 ,BF
. 1 20) (79, 160) ,4,BF
, l .'0) - (92, 160) ,4,BF
4 10 1 TNF (97 , 120) - U05, 160) ,4 ,BF
420 l INE( 188, 120) ( 196,160) ,4,BF
430 I TNF ( 123,120) -d31 ,160) ,4,BF
440 L INF ( 136,12®) (144,160) ,4,BF
,120) - ( 1 70, 160) ,4 ,BF
. 1 20 I ( 1 83
,120)- (222
4 00 L . I NE ( 22 7 . 1 20 ) ( 235
490 L INE (Ü0.0) (170,13) ,6, B
500 I 1 NF ( 23 , 5 t\ í ( 256 . 3 4 ) ,2
510 I 1 NE < 23 , 64 ) *- < 25ó , 64 ) , 2
520 L l NF ( 23 . 74 ) - ( 256 , 74 ) ,2
530 L INE (23.84 > (256,84) ,2
540 I rMF<23,94) (256,94) ,2
550 C I RCLE ( 33 , 84 ) , 2 . 7
560 P A 1NT ( 33 , 84 ) ,2,7
570 PRESE T '90 ,4 ) :PRINT#1 , "F
580 PRESE : T (105, 25 ) : PR I N T tt 1 ,
590 COLOR 1 :Í RFSFT (249 , 1 35)
600 PRESET i 249 , 1 60 ) :PRINf*l
330 L INF (20*
340 l INF (218,1 20)
350 LINE (23I . I 20)
360 I INE (24 'i .
370 LINE (32
380 L I NE ( 45 ,
390 t INE <71
400 i INF (84 ,
450 I INF ( 162
460 L I Nfc ' 1 75
4 70 I INE (21 4 ,
, t 60 ) , 4 , BF
, 1 60) ,4 ,BF
, 1 60 > , 4 , BF
1
ANO
M S X"
PR ÍNT4M
610 COLOR 7: PRESET (67,0) iPRINTft] , " /
620 PRESF f ( 1 80 ,0) :PR l NT# 1 , " J3"
630 A*» INI F íi
640 REM * NOTAS *
650 COLOR /
IHEN PLAY"C
660 IF A*«"A rt
670 IF A*="S" THEN PLAY "D"
THEN PLAY "E '
IHEN PLAY "F"
THEN PLAY "G'
THEN PI A Y "A*
IHEN PLAY"B'
: PRESÉ T ( 203 , 65 ) :PR I N I * 1 , " / "
: PRESET (233 ,61 ) :PRINT#l
: PRESET (53,91 ) :PRINT#1
: PRESE T (83 ,85) :PRINT#1 ,"/"
: PRESET ( 1 13,81 ) sPRINTftl , "/"
:PRESET( 143,75) :PRINT#1 , "/"
: PRESET (173,71 ) :PRINT#1 ,"/"
680 IF A$="D"
690 If A*="E"
700 IF Af="i,"
710 TF A$="H"
720 IF A*="J"
730 REM * OCTAVAS *
740 IF A$="l" THEN PLAY "OT
750 TF Aí-"?" THEN PLAY "02"
760 IF A*="3" THEN PLAY "03"
LOS JUEGOS ELECTRONICOS
52 MSX
770 IF A*="4" THEN PLAY "04"
780 1F A$---"5" THEN PLAY "05"
791? IF A*="ó" IHEN PLAY "06"
800 IF A**"7 M THEN PLAY "07"
8H? IF A$="8" THEN PLAY "08"
820 REM * SOSTENIDOS *
830 IF A*="0" THEN PLAY "C#"
840 IF A*="W" THEN PLAf "Dtt"
851? IF A*í="E" THEN PLAY "E#"
860 IF A*^"R" THEN PLAY "F#"
87«ZI IF A*="T" THEN PLAY "Gtt"
880 IF A$="Y" THEN PLAY "A#"
890 IF A*="U" THEN PLAY "B#"
900 REM * BEMOLES *
910 IF A*="I" THEN PLAY "C-"
920 IF A*="0" THEN PLAY "D-"
930 IF A$="P" THEN PLAY "E-"
940 IF A$="K" THEN PLAY "F-"
950 IF A*="L" THEN PLAY "G-"
960 IF A$="M" THEN PLAY "A-"
970 IF A*='V THEN PLAY " B~ 11
980 REM * LONGITUD *
990 IF A*="Z" THEN PLAY "T32"
1000 IF A$="X" THEN PLAY "T80"
1010 IF A$="C" THEN PLAY "T120"
1020 IF A*="V" THEN PLAY "T170"
1030 IF A*="B" THEN PLAY "T220"
1040 IF A*="N" THEN PLAY "T255"
1050 REM * MUSICA EN EL REGISTRO *
1060 IF A*» "9" THEN PLAY " T250CDECDEEFGEFGGA6FECGAGFECCO3GO4C "
;C*="GGBB04DDEE03FFAA04CCDD" :PLAYA*+A* :PLAYB*+A* :PLAYC*+A* :PLAY "04 " :BEEP
1080 IF A*="-" THEN PLAY "04T255EDT1 20ET200DCO3BAT 1 50G#T255AO4 "
1090 GOTO 630
1100 REM * INICIALIZACION *
¿Ü£J££&"" " THEN p RESET (203, 65) :C0L0R1 :PRINT#1 ,"1":PRESET (233,61 ) :PRINT#1 "■" i
RESET ( 143 ,75) :PRINT#1 , "■" sPRESET ( 1 73 ,71 ) :PRINT#1 , "1"
1120 LINE(23,64)-<256,64) ,2
1130 LINE<23,74)-<256,74) ,2
1140 LINE(23,84)-(256,84) ,2
1150 LINE(23,94)-(256,94) ,2
1160 GOTO630
1170 REM * INSTRUCCIONES *
1180 CLSrBEEP
tes* A"°DO TE ?-R^ V OC ^ la escala ' bast * con sar las teclas siguien
tes. A-DO, S=RED=MI , F=FA , G=SOL , H=LA , J»SI. M
\IZ tSSíI^^ 8 ? ct — 1=P— ra, 2=segunda, etc."
1210 LOCATE0,13:PRINT"Para alargar la nota, sitúese sobre las letras Z, X, C, V
, B o N, siendo Z la más lenta y N la más rápida."
I23S s°=^KEY* 2!PRINT ' ,PUlSa 61 SSpaCl ° para continuar"
1240 IF S*=" " THEN 1260
1250 GOTO1230
1260 CLS:BEEP
=SOL#^ OC ÍIla;! ! U^ t0 " r 5 ° StenidOS ' Q=DÜ »> W =* E *< R-F A# , ,
isa ajrrijs^ ios be * oies t
1 oI?. L ^; E0 ' 1 ? lPRINT 51 -ted'tiene^ue^orrar las notas de entrada,
para poder vol-ver a componer, es suficiente con pulsar el espacio "
1300 LOCATE0,22:PRINT"Pulsa el espacio para continuar" P
1310 Z*=INKEY*
1320 IF Z*=" " THEN 1340
1330 GOTO 1310
1340 CLSsBEEP
1350 LOCATE0,0 sP RINT"Como ejercicio tiene dos melodías grabadas que tendrá qu
e generar. Es- tas se obtienen pulsando las teclas 9 u 0."
1360 LOCATE0, 7 SPRINT" ¡Que lo paséis bien'"
1370 LOCATE0,22:PRINT"Pulsa el espacio para continuar"
1380 S*=INKEY*
1390 IF S*=" " THEN BEEP s GOTO 170
1400 GOTO 1380
1410 STOP :END
Continuando con las
diversas rutinas que
componen el complejo
programa que está
almacenado
permanentemente en
ROM, vamos a añadir
algunas más a las que
teníamos, esto no quiere
decir que todo lo
expuesto aquí sean
rutinas en código
máquina, pero por el
momento, nada mejor
para empezar, que ir
comprobando el
funcionamiento de estas
rutinas.
Pero este mes,
iniciaremos la sección
con una pequeña idea
enviada desde Málaga
por nuestro seguidor Diego
Feliz Gil.
Nos ha mandado un
complemento a un dibujo
generado en el artículo
Diseño Gráfico, del
número 1 de MSX
Magazine. En él se
explicó el funcionamiento
de algunas instrucciones
importantes y al final del
artículo, se realizó un
programa para mostrar
dichos comandos.
Este dibujaba un
pingüino, pero como el
dibujo en sí quedaba
demasiado frío, nuestro
amigo nos ha enviado
unas líneas de programa
que añadidas al ya
existente, dibujan un
sombrero. De esta forma
nuestro simpático dibujo
queda algo más
interesante.
Programa 1
Alguna vez nos hemos
topado con el problema
de no saber cuanto
tiempo llevamos delante
de la pantalla, con un
juego o un programa. Si
tenemos reloj a mano, tal
problema no tendrá más
consecuencia, pero si no
es así, el siguiente
programa resolverá la
cuestión.
Este sencillo programa
utiliza las interrupciones
del sistema para
visualizar un reloj en la
esquina superior derecha
de la pantalla, al mismo
tiempo que ejecutamos
nuestro programa.
Este se puede dividir en
dos parte. La primera es
la encargada de habilitar
las interrupciones y pedir
la introducción de la
hora.
La segunda parte se
situará al final del
programa, poniéndo
especial atención en no
utilizar las mismas
variables en el
programas que en la
rutina.
Programa 2
Ahora veremos unas
cuantas rutinas más, a
título de complemento a
las expuestas el mes
anterior, estas son
equivalentes a lo que
hacen dos instrucciones
BASIC, que son, STRIG y
STICK.
La primera de las rutinas
es la utilizada por el
intérprete BASIC situado
en ROM, para limpiar la
pantalla (CLS). Comienza
en la direción C3
hexadecimal (195
decimal) y la podremos
utilizar en nuestros
programas, aplicando el
CALL correspondiente.
Ahora veremos dos
rutinas que son las
54 MSX
encargadas de leer el
estado de los po/t de
joysticks.
La primera comienza en
la dirección D5
• hexadecimal (213
decimal) y devuelve al
acumulador el dato leído
en el port correspondiente
en ese registro antes de
la llamada a la subrütina.
En ensamblador se haría
un programa de la
siguiente manera:
l_D A,1;joystick 1
CALL 213
CP1 JP Z, arriba
CP 3
JP Z, derecha
CP 5
JP Z, abajo
CP 7
JP Z, izquierda
RET
La que vamos a explicar
a continuación, es el
complemento de la anterior
y sirve para comprobar si
se ha pulsado algunos de
los botones de disparo
de cualquiera de los
joysticks o la barra
espaciadora. Comienza
en la dirección D8
hexadecimal (216
decimal) y como la
anterior, deberemos
cargar en el acumulador
el número de disparador
que deseamos
comprobar. A
continuación, haremos el
CALL correspodiente y la
rutina nos devolverá en el
acumulador 255, si se
está pulsando el
disparador y 0 en caso
contrario.
10 REM RELOJ
28 INPUT "HORA 11 ; CX :INPUT" MINUTO" ;B'/.
30 CLS
40 ON INTERVAL=50GOSUB1000:INTERVALON
50 GOTO 50
1000 AX«A%+1 :IF AX=60THENA">í=0:B:í=B*¿ + 1
1010 IFB7.=60THEN BX«1 tC5í«€í3£«C5í^1
1020 IFC/Í = 13THEN C% = 1
1030 LOCATE 22,0:PRINTCy. ; " f BX | 41 : " ;A%
1040 RETURN
37i3 REM Rutina enviada por Diego Félix Gil
de Málaga para la sección de Ideas y Trucos,
380 '
390 CIRCLE (100,35) ,17,3, ,, .4
400 PAINT (100,30) ,3
410 CIRCLE (100,5) ,5,15, , ,1 .4
420 PAINT (100,5) ,15
430 LINE (03,35)-(117,35) ,9
440 LINE (S3",35)-(100,10) ,9
450 LINE (100,10)-(117,35) ,9
460 PAINT (100,20) ,9
470 CIRCLE (100,35) ,17,3, ,, .4
480 PAINT (100,30) ,3
490 SOTO 490
MSX 55
En capítulos anteriores aprendimos una pequeña parte
del conjuto de instrucciones que nuestro ordenador es
capaz de entender. Con ellas hicimos algunos sencillos
programas que realizan sumas de diferents magnitudes.
Por esto, evidentemente, es bantante poco para nuestras
pretensiones. Además siempre que llamábamos a un
programa en lenguaje máquina teníamos que hacerlo por
medio de BASIC, pasándole los datos por medio de
POKEs y sacando los resultados con PEEKs. Otro
problema era el de no poder salvar los programas en
cinta. Aunque esto no resulta grave de momento, ya que
los que hemos dado solo son útiles a efectos didácticos,
va a ser necesario cuando crezcan y se conviertan en
algo útil, ya que queremos consérvalos para no tener
que introducirlos cada vez que queramos usarlos.
CODIGO
n tercer problema (todavía no
resuelto) se presenta por la
complejidad que representa in-
troducir un programa como có-
digos numéricos, debiendo hacer la
traducción y conversión de todas las
instrucciones y datos previamente.
Sería mucho más fácil introducir las
instrucciones 'LDA', 'ADD', etc, en
lugar de sus correspondientes núme-
ros. Esto en realidad se puede hacer
por medio de unos programas espe-
ciales.
Hasta ahora hemos hablado indis-
tintamente de lenguaje ensamblador
y código máquina asumiendo que
era lo mismo, pero hay grandes dife-
rencias entre uno y otro. Diferencias
que se explican ahora. Cuando no-
sotros hablábamos de instrucciones
del tipos 'LDA 45000', estábamos
usando el lenguaje ensamblador. En
cambio cuando poníamos los códi-
gos numéricos correspondientes
(decimales o hexadecimales) estába-
mos usando código máquina.
Es decir, un programa ensam-
blador es aquel que nos permite usar
las instrucciones por su nombre, es-
cribir los números dieciseis bits
como uno solo, sin tener que dividirlo
en dos bloques de ocho bits y otra
serie de ayudas que simplifican enor-
memente el trabajo. En cambio en
código máquina todas estas ayudas
no existen y tenemos que manejar
los números. En esta serie lo que se
ha hecho ha sido escribir el progra-
ma en ensamblador y traducirlo a
mano, instrucción a instrucción, has-
ta obtener el código máquina.
Este proceso se puede automati-
zar mediante el uso de los denomina-
dos 'programas ensambladores' o
más comúnmente 'ensambladores',
que son programas escritos con este
fin específico de traducir de uno a
otro. El único problema es que toda-
vía no hemos encontrado ninguno
para los ordenadores MSX (los otros
ordenadores no le valen aunque lle-
ven el mismo microprocesador), y
por tanto tenemos que seguir hacién-
dolo como hasta ahora. Pero no de-
sesperen, hemos enviado a toda la
redacción (básicamente nuestro ex-
56 MSX
I ese desconocido (Cap. 4)
celso director) en busca de uno y es-
peremos que pronto nos encuentre
alguno para anunciarlo en la revista y
que todo el mundo lo pueda usar an-
tes de enloquecer con los odiados có-
digos. Naturalmente como ustedes
los lectores también son parte de la
redacción (¿Lo dudaban?) espera-
mos su aviso si encuentran alguno
antes que nosotros.
¿Qué es el estándar MSX?
Si usted se ha comprado un orde-
nador MSX, o piensa comprarlo, una
de las razones que habrán influido
será la de que es estándar y por tan-
to los programas de uno valen para
otro. Esto implica que todos ellos tie-
nen que tener unas características
comunes a nivel interno y externo
que los hagan compatibles. Pero
pueden existir otros puntos en los
que difieran (disposición interna de
ciertos dispositivos, tipo de los dis-
positivos, etc.).
Muchas veces, como los progra-
madores avanzados saben, es más
fácil y rápido utilizar directamente al-
gunos dispositivos que las rutinas
previstas para ello, pero estos dispo-
sitivos, o su localización pueden no
ser estándar y, por tanto, diferir de
un modelo a otro. Para evitar hechos
como éste, en esta serie recurriremos
siempre a las disposiciones estándar
tal como las ha definido Microsoft
(la casa que diseñó el estándar y que
se lo vendió posteriormente a los dis-
tintos fabricantes). Ya que todo orde-
nador con la etiqueta 'MSX' debe
cumplir esas características. Esto a
veces puede complicar un progra-
ma, pero no será mucho y siempre
tendrá la ventaja de hacerlo compati-
ble con todos los demás.
Por tanto, a partir de este mes ire-
mos comentado las características
estándar del MSX y como usarlas del
mejor método.
Entradas y salidas
Una de las cosas que diferencian
a un ordenador de otro, son las en-
tradas y salidas. Mientras existen
múltiples ordenadores con el mismo
microprocesador (por ejemplo, el ZX
Spectrum, el Amstrad y los MSX, lle-
van todos el Z-80) el tipo de pantalla
que tienen, la disposición del tecla-
do, como controlar el altavoz y la dis-
posición de todos ellos en la memo-
ria son distintas para cada marca de
ordenador. En los MSX esto se ha
estandarizado y todos llevan el mis-
mo tipo de pantalla, el mismo tipo de
teclado, el generador de sonido pue-
de hacer lo mismo en todos, etc. Y
lo que es más importante, el modo
de manejarlos es el mismo en todos.
Por lo que todo lo que digamos de
ahora en adelante será válido para
todos ellos.
Como dos primeros puntos a estu-
diar vamos a elegir los que nos falta-
ban para completar la rutina de suma
de capítulos pasados. La lectura del
teclado y la impresión de pantalla.
Veremos cómo hacerlo y cómo
transformar los datos para que sean
útiles para nuestro programa.
El teclado, los caracteres
ASCII
Ya vimos que en la memoria inter-
na del ordenador sólo se podían al-
macenar números y, además, de 0 a
255. Entonces, ¿Cómo podemos
guardar caracteres 9 La respuesta
reulta sorprendentemente fácil, sobre
todo si se ha jugado alguna vez a
cifrar mensajes, ya que se basa en
asignar un código numérico a cada
letra o signo y almacenar ese código
en la memoria. La única restricción
que se le impone a este sistema de
codificación es que no puede haber
ningún número menor de cero o ma-
yor que doscientos cincuenta y cin-
co, que es lo que cabe en un byte.
Con estas pautas se pueden ge-
nerar infinidad de códigos distintos. La
industria ha estandarizado unos
cuantos de ellos. El EBCDIC usado
principalmente en los mainframes
(grandes ordenadores) de IBM, y el
ASCII, que es el usan todos los mi-
croprocesadores y en especial los
MSX, aunque en estos está modifica-
da respecto al estándar. En la figura
1 se da la lista completa de todos los
caracteres junto a su correspondien-
te código. Hay que tener en cuenta
que desde el teclado algunos de es-
tos caracteres se generan por medio
de las teclas GRAF, CODE o mayús-
culas. Adémás los códigos del 0 al
31 en el ASCII estándar cumplen fun-
ciones especiales de control de pan-
talla e impresora (por ejemplo, el RE-
TURN que es el salto de línea, es el
código 13), por lo que el ordenador
debe distinguir entre un caso y otro.
De momento sólo utilizaremos los
realmente estándar (del 32 al 127) y
posteriormente veremos como usar
los demás.
Resulta muy importante tener en
cuenta que con este sistema NO se
almacenan números en la memoria
(por lo menos con el significado que
le vamos dando hasta ahora) sino
códigos de caracteres que tienen
distintos significado. Hay que obser-
var que los símbolos de números (o,
1 , 2, 3, 4, 5, 6, 7, 8 y 9) tiene asigna-
dos los códigos del 48 al 57 y se al-
macena cada uno en un byte. Esto
nos indica que un número puede te-
ner dos representaciones distintas,
en binario como vimos al principio,
en cuyo caso, cada byte puede al-
macenar un valor entre 0 y 255, y en
ASCII, que sólo permite un carácter
en cada byte. También se despren-
de de nuestra observación que el
contenido de un byte puede ser un
número (o parte de un número) ex-
presado en binario o el código de un
MSX 57
£7 sistema más sabio
PHILIPS introduce en España
el HOM ECOM PUTER más sabio,
el sistema MSX, nuevo estandard
mundial.
¡Con cuanta sabiduría se ha
pensado en cada una de sus
características!
Con el PHILIPS MSX puede
realizar mil combinaciones
de elementos: monitores,
impresoras, floppys, programas
educativos, de juegos y
aplicaciones profesionales, gracias
a su compatibilidad total tanto
en hardware como en software.
El PHILIPS MSX está tan
sabiamente diseñado que Vd.
puede elegir entre conectarlo al
televisor de su casa, o a un monitor
monocromo o de color.
De igual modo puede utilizar
como unidad de almacenamiento
de memoria un cassette normal
o un Floppy Disc del sistema
MSX.
¡Y qué potencia tiene el
PHILIPS MSX!
Es tanta, que si lo utilizamos
con un Floppy Disc y junto a
MSX-DOS, es compatible con
sistemas de tipo profesional y de
precio mucho más elevado.
Y aquí no acaba la sabiduría
con que ha sido creado el
PHILIPS MSX.
Puede hacerlo crecer según
sus necesidades, desde un
sencillo ordenador doméstico,
con el lenguaje Basic más
potente del mercado, hasta un
sistema de tipo profesional que
puede llegar a una capacidad
máxima de 1.024 K bytes.
PHILIPS MSX. Nunca se le
quedará pequeño, nunca se
le quedará anticuado.
PHILIPS MSX, creado como un
equipo atractivo, fácil
de usar y muy asequible de
comprar.
PHILIPS MSX HOMECOMPUTER SYSTEM
El amigo sabio de la familia.
¡PHILIPS MSX, sin duda, el
sistema más sabio!
MSX-DOS es compatible con
CP/M™ y posee la misma
estructura de ficheros que
MS-DOS™.
Todos los sistemas MSX son
compatibles entre sí.
MSX, MSX-DOS™ y MS-DOS™ son marcas
registradas de Microsof Corp.
CP/M™ es una marca registrada de Digital
Research.
O Si desea algún tipo de
información relacionada con
el campo del HOMECOMPUTER,
estamos a su disposición en el teléfono
(91) 413 22 46
(""¡Desearía recibir más información"!
sobre el PHILIPS MSX.
Nombre
Apellidos |
Domicilio
PHILIPS IBERICA S.A.E.
Apartado de Correos 50.800
28080 MADRID
x
" ':
ESPECIFICACIONES
TECNICAS
Consola VG 8010
Sistema MSX.
Teclado: Teclado con disposición y separación es-
tilo profesional de 72 teclas.
Memoria: 32 K ROM, 48 K RAM (incluyendo 16
K RAM de vídeo).
Interconexiones incorporadas: Salida de RR Sali-
da Monitor, Interface audio-cassette, 2 conectores
para controles manuales. 2 ranuras para cartuchos.
Consola VG 8020
Sistema MSX.
Teclado: De recorrido completo, profesional con
73 teclas.
Memoria: 32 K ROM, 80 K RAM (incluyendo 16
K RAM de vídeo).
fnten anexiones incorporadas: Salida de RF. Sali-
da Monitor. Interface audio-cassette. 2 conecto-
res para controles manuales, 2 ranuras para car-
tuchos, Interface para impresora.
Características comunes
VG 8010/VG 8020
Conjuntos de caracteres 253 alfanuméricos y grá-
ficos (incluye la ñ).
!>><>< rsadows Principal Z 80 A, Audio AY-3-S'Un,
Vídeo TMS 9929 A.
lenguaje BASIC MSX 130 instrucciones incorpo-
rando macrocomandos y sprites.
Posibilidad máxima de expansión de memoria
1M. byte.
Editor de pantalla.
Utilizando MSX-DOS™ es compatible con
CP/M IM y tiene la misma estructura de ficheros
que MS-DOS™
Monitor monocromo
BM 7552 y BM 7502
Tubo de Imagen: Pantalla de alta resolución de
12", antideslumbrante. Fósforo P 42.
Ancho de Banda: 20 MHZ (a -3 dB).
Resolución: Horizontal: 920 líneas en el centro.
Vertical: 285 pixels.
Caracteres en pantalla: 80x25 (2.000)
Salida Sonora: 0,3 W con 5% de distorsión.
Impresora de matriz
vw ooio. 40 columnas y vw 0020 de 80 colum-
nas.
Método impresión Matriz, de puntos por impactos
Matriz de carácter de 8x8 puntos.
Paso de caracteres 10,5 cpi y 10 cpi, respectiva-
mente.
Velocidad de impresión i^S cps y 37 cps respecti-
vamente.
Mecanismo PF alimentación por fricción y trac-
ción.
Próximos lanzamientos
Monitor de color 14".
Floppy disc V/r 500 K sin formatear (360 K
for mateado).
Software
Disponibles en MSX más de 150 títulos entre apli-
caciones, utilidades, educativos y juegos en so-
porte ROM s , cassette y floppy de 3'/2".
¿CÓ0Í6O MÁ3U/MAP,
carácter en ASCII. Evidentemente es
necesario distinguir entre un caso u
otro, ya que los significados son dis-
tintos en cada uno, pero por desgra-
cia no existe ningún sistema que nos
diga si el contenido de un byte cual-
quiera de la memoria es de uno u
otro tipo.
Es más, además de estos dos ca-
sos existe un tercero, ya que ese
byte puede ser una instrucción de un
programa. El único modo de diferen-
ciar entre todos los casos es estable-
ciendo el programador el significado
de cada uno y procurando que el
programa no haga operaciones ilega-
les. Esto no representa una prohibi-
ción real de cara al ordenador y si el
programa está mal hecho pueden
producirse errores. Basta pensar en
las rutinas de suma de capítulos an-
teriores. Si hubiésemos colocado
erróneamente la dirección de alma-
cenamiento de datos empezando en
la memoria 40000. estaría en las mis-
mas posiciones que el programa y al
escribir encima nos lo borraría produ-
ciéndose un error (como se ve en la
figura 2) al intentar ejecutar el micro-
procesador una instrucción que no-
sotros no le habíamos dicho. Por tan-
to hay que vigilar el contenido de cada
memoria y recordar que clase de
dato se almacena en ella.
Una máquina de escribir
El primer programa que vamos a
hacer es muy sencillo y su utilidad
mínima, pero nos enseñará como
manejar códigos ASCII. Básicamente
consiste en una máquina de escribir,
ya que lee los códigos de las teclas
que pulsemos e imprime por pantalla
el carácter correspodiente. Esto se
sigue haciendo hasta que pulsemos
un punto en cuyo caso terminará
la ejecución.
Para poder hacerlo vamos a
aprender algunas instrucciones más,
una de ellas compara el contenido
del acumulador con un byte y pone
las diversas banderas del registro F
de un modo u otro según resulte la
comparación. Otra instrucción que
vamos a aprender es la de llamada a
subrutina. Esta nos permite llamar a
otros programas en código máquina
para que ejecuten su acción y luego
se devuelvan el control al terminar
(siempre que tengan una instrucción
RET al final). Estas rutinas pueden
ser de las incluidas en la ROM de
nuestra máquina o escritas por noso-
tros mismo y equivalen a los GOBU-
B...RETURN del BASIC que nos per-
mite definir las operaciones más co-
munes aparte y luego llamarlas des-
de el programa. En ensamblador la
llamada se realiza poniendo CALL'
( CDh o 205) seguido de la dirección
de las subrutinas en dieciseis bits.
En este caso las rutinas que usare-
mos ya están definidas en la ROM y
consisten en dos. La primera espera
que pulsemos un carácter en el te-
clado y cuando lo hacemos devuelve
el control a la que le ha llamado con
el código de dicho carácter en el
acumulador. Se llama CHGET y se
encuentra en la dirección '0009Fh\
La segunda imprime e la pantalla el
carácter cüyo código se encuentre el
en acumulador, se llama CHPUT y
está en '00A2h'. Después de ver
esto queda claro que el núcleo de
nuestro programa consiste simple-
mente en llamar a la primera rutina y
cuando nos devuelva el control lla-
mar a la segunda, ya que el dato que
nos interesa (el código del carácter)
viene en el acumualdor de la primera
y se tiene que enviar a la segunda
MSX 59
también en el acumulador sin ningu-
na modificación.
Después de esto se coge el carác-
ter (que aún sigue en el acumulador
ya esta segunda rutina no lo borra) y
se compara con el código del punto
(46 ó 2EIY) por medio de la instruc-
ción 'CP', que compara el contenido
del acumulador con el byte que se
indique. Esta instrucción admite
como muchas otras, varios tipos de
direccionamiento. El que veremos
ahora es el inmediato, que compara
el byte que sigue a la instrucción. El
formato de escritura en ensamblador
puede ser de dos tipos. En el prime-
ro se pone la instrucción seguida del
carácter entre comillas, en nuestro
caso 'CP el programa esambla-
dor (o nosotros) pondrá el código de
ANTES
instrucción
instrucción
instrucción
instrucción
instrucción
escribir
en ero posición
DESPUES
instrucción
instrucción
instrucción
instrucción
instrucción
instrucción
FIGURA 2
la instrucción seguido del código del
carácter especificado. El segundo
formato consiste en poner la instruc-
ción y detrás del código del carácter,
'CP 46'. Este segundo formato tiene
la ventaja de explicar claramente lo
que se hace, pero para saber que
carácter es tendremos que buscarlo
en la tabla (Además deberemos sa-
ber que nos estamos refiriendo a un
crácter y no a un número binario. En
cualquiera de los dos casos el códi-
go generado será el mismo, por lo
que el usuario queda libre de usar
uno u otro sistema.
Una vez realiza la comparación,
las banderas del registro F quedan
como si se hubiese hecho una resta
pero sin modificar el contenido del
acumulador. La bandera 'N' siempre
0
33
1
66
B
99
c
1
Q
34
67
C
100
d
0
35
#
68
D
101
B
J
mm
36
*
69
E
102
f
A
4
♦
t—\ —y
37
'A
— j ,-v
F
103
q
5
*
38
&
71
G
104
h
O
9
no
J7
( xL
H
105
i
7
•
4lZi
(
73
J
106
j
8
o
41
)
74
J
107
k
9
42
*
75
K
108
i
10
□
43
f
76
L
109
m
1 1
44
77
M
1 10
n
12
i
45
78
N
1 1 1
o
13
/
46
79
0
112
P
14
JO
47
/
80
P
113
q
15
*
48
0
81
Q
1 14
r
16
♦
49
1
82
R
115
s
17
50
n
83
S
116
t
18
T
51
3
84
T
117
u
19
1
4
85
U
118
V
2d
y
53
5
86
v
119
w
21
t
54
6
87
W
120
22
i
55
7
88
X
121
y
23
56
8
89
Y
122
z
24
r
57
9
90
Z
123
c
25
i
58
■
•
91
E
124
1
•
26
L
59
■
92
\
125
}
27
J
60
93
1
126
28
X
61
94
127
29
62
y
95
128
3IZI
63
96
>
129
ü
31
•+■■
64
@
97
a
130
é
32
65
A
98
b
131
á
60 MSX
puesta a uno, la 'C se pone a uno si
el operando externo es mayor que el
acumulador y a cero en caso contra-
rio. La 'P/V es similar a la 'C pero
considerando números con signo. La
'H' lo hará de un modo similar co los
cuatro bits de la derecha, la de signo
S', como siempre, será igual al bit
más significativo y la Z' se pondrá a
uno solo si la resta da de resultado
cero, es decir, si ambos son iguales.
Esta última bandera es la que nos
interesa en este caso, porque hare-
mos uno u otra según sean iguales o
ENSAMBLADOR DECIMAL HEXADECIMAL
INICIO CfiLL 159 205 159 00 CO $F
CflLL 162 205 162 00 C0 A2
CP- " " 254 46 FE 2E
JR H2, INICIO 32 246 20 F6
RET 201 C9
FIGUfiR 3
00
00
¿CÓ0Í6O MÁOU/A//\p
V*.
J 32
a
165
r.i
w
198
1
133
á
166
a
199
134
á
167
0
200
■
135
c
168
¿,
201
1
136
é
169
r
202
1
137
é
170
-i
203
'/
138
e>
171
l/ i
204
139
i
172
"4
205
140
i
1 73
i
206
*
141
i
174
(
207
142
Á
175
>>
208
i
143
Á
176
'V
209
I
144
É
177
a
210
M
145
X
178
f
21 1
■
146
i
179
/w
1
212
*
147
ó
180
es
213
■
148
0
181
214
■
149
6
182
u
215
*
150
Ú.
183
u
216
A
151
Ci
184
Q
217
*
152
y
185
i'
218
u
153
0
186
219
■
154
ü
187
220
155
r
188
221
r
156
£
189
i..
1
157
¥
190
•TI
223
158
191
§
224
•y
159
i
192
B
160
á
193
226
P
161
i
194
■
227
ir
162
Ó
195
228
C
163
Ú
196
0
164
ñ
197
■
230
M
no. Si son iguales hay que volver al
principio para leer otro carácter. Esto
se hace poniendo una instrucción
JR NZ\ que ya vimos en el capítulo
pasado, a continuación di 'CP' de
modo que comprueba esta bandera
T y si no está puesta se salta hacia
donde se dice. Por último para aca-
bar se pone un 'RET' después de
ésta.
En la figura 3 se ve el listado com-
pleto en ensamblador (con los nom-
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
253
254
i
O
Q
6
•x.
*
e
n
•c
c
n
2
MSX 61
bres de las instrucciones) y en códi-
go máquina (decimal y hexadecimal).
Observando el listado en ensambla-
dor se puede ver que en el salto no
se pone el desplazamiento como ha-
cíamos el mes pasado, sino que se
indica un nombre y ese mismo nom-
bre está delante de la instrucción a la
que queremos ir. Esta palabra se de-
nomina etiqueta y simplifica mucho
el trabajo cuando se está trabajando
con un programa ensamblador ya
que éste se encarga automáticamen-
te de calcular el desplazamiento. En
cualquier caso aclara el listado para
leerlo. Como norma siempre utilizare-
mos las etiquetas en el listado en en-
samblador y el desplazamiento en el
listado en código máquina, de este
modo el programa será fácilemente
comprensible y los códigos se pue-
den introducir inmediatamente.
El programa se puede introducir
como es habitual en la dirección
4000 por medio del cargador hexa-
decimal. Para ejecuarlo se utilizan las
habituales instrucciones:
DEFUSRO - 4000
PRINTI USR0 (1)
A continuación cualquier carácter
que tecleemos aparecerá en la pan-
talla como si estuviésemos trabajan-
do con una máquina de escribir. Al
pulsar un punto se terminará de eje-
cutar la rutina y después de imprimir
OK' el ordenador volverá a su modo
de funcionamiento normal.
Como salvar nuestros pro-
gramas
Vamos a explicar ahora como sal-
var y leer programas en código má-
quina en cinta. Esto resulta funda-
mental cuando se escriben progra-
mas largos e interesantes para evitar
tener que introducirlos de nuevo. El
BASIC del MSX tiene dos instruccio-
nes especiales para esto. La primera
es:
BSAVE "nombre del progra-
ma", dirección inicial, dir. final,
dir. ejec.
La dirección inicial es la menor
ocupada por el programa (en los que
hemos hechos, ésta es donde em-
pieza a ejecutarse). La dirección final
es la más alta ocupada por el progra-
ma. El modo de hallarla es muy sen-
cillo. Se cuenta el número de bytes
que ocupa el programa y se le suma
a la dirección inicial, al total se le res-
ta uno y ésta es la dirección final. Por
último la dirección de ejecución es
donde se empieza a ejecutar el pro-
grama cuando lo cargamos. Si no se
pone esta dirección se considera
que es la misma que la dirección ini-
cial.
Así, por ejemplo, para salvar el
programa que acabamos de crear
con el nombre 'ECO', habría que es-
cribir:
BSAVE "ECO", 40000, 40010
La dirección de ejecución no se
ENSAMBLADOR
poe ya coincide con la dirección ini-
cial.
Para cargar un programa previa-
mente grabado se utiliza:
BLOAD "nombre del progra-
ma", R desplazamiento
El nombre tiene que ser el mismo
con el que se salvó, si se pone la R
el programa se empezará a ejecutar
automáticamente al terminar de car-
garse. El desplazamiento es opcional
y si no se pone el programa se carga-
ra la dirección que se salvó, pero
si se pone, esa dirección se suma a la
que se usa para salvarlo y el progra-
ma se carga a partir de ésa. No con-
viene usar esa última opción ya que
muchas veces el programas utiliza
direcciones absolutas en los saltos y
ya no serián válidos al modificar su
BASIC
INICIO
' CAL.L
159
10 A$-INKEV$
CP
V
20 IF fl$<"
a" THEN
JR
C, INPRI
GOTO 50
CP
ti | ii
30 IF R$>-
T THEN
JR
HC , 1 UPA 1 GOTO 50
SUB
«32
40 A$»CHA$(ASC(Af)-32)
IMPRI
CfiLL
162
50 PRINT fl$;
CP
ii ii
60 IF R$="
." THEN
JR
NZ, INICIO GOTO 10
RET
70 JEN0
F I GURA
5
ENSAMBLADOR
DEC 1 UAL
HEXADEC 1 flAL
INICIO
CRLL
159
205 159 00
CO 9F 00
CP
V
254 97
FE 61
JR
C, INPRI
56 6
36 06
CP
"{"
254 123
FE 76
JR
NC, INPRI
48 2
30 02
SUB
«32
06 20
inpRi
CRLL
162
205 162 00
C0 R2 00
CP
N u
254 46
FE 2E
JR
NZ., INICIO
32 236
20 EC
RET
201
C9
FIGURR 6
62 MSX
posición en memoria. O también
puede ser que se ponga encima del
área de datos, creado problemas
como vimos anteriormente.
Para cargar y ejecutar el programa
anterior sería:
BLOAD "ECO", R
Minúsculas y mayúsculas
El siguiente programa que vamos
a hacer nos permtira profundizar un
poco más en el tema de las corrpa-
raciones así como en el manejo de
los caracteres ASCII, especialmente
veremos como pueden ser tratados
como tales o como números cuando
nos interesa.
Esta rutina realizará la misma ope-
ración de lectura y escritura de antes
pero además convertirá todas las mi-
núsculas a mayúsculas antes de im-
primirlas. El primer paso a realizar
será, como antes, obtener el carác-
ter del teclado, a continuación mirará
si es un miyúscula y si lo es la con-
vertirá en mayúsculas, en caso de
que no lo sea (que ya sea mayúscu-
la, o cualquier otro símbolo) lo impri-
mirá directamente.
La operación de leer un carácter
del teclado se realizará como antes
por medio de la rutina CHGET, a
continuación se realizan dos compar-
taciones, la primera con 'a' y la se-
gunda con 1 ' (el carácter posterior
a la 'z') . En el primer caso, si la ban-
dera de acarreo 'C está a cero indi-
ca que el carácter del acumulador es
mayor o igual a la 'a', en le segundo
caso la bandera de acarreo a uno se-
ñala que este carácter es inferior a
' '. Si se cumplen las dos compara-
ciones entonces es una letra minús-
cula. En el programa lo que se hace
es realizar la primera comparación ,
a continuación se realiza un salto con-
dicional a la parte de impresión si la
bandera de acarreo está a uno y si
no se realiza la segunda compara-
ción, a continuación de la cual se
realiza otro salto condicional a la po-
sición de impresión si la bandera de
acarreo está a cero. En caso de que
no se haga el salto se realiza la con-
versión a mayúsculas.
Este proceso de conversión es
muy sencillo si se tiene en cuenta
que los códigos de las mayúsculas
tienen la misma ordenación y que los
caracteres respectivos se diferencian
en 32 (la 'A' tiene el código 65 y la
'a' el 97, que es 65+32, la 'B' tiene
el 66 y la 'b' el 98. etc). Ya que sa-
biendo que es una minúscula, basta
restarle 32 para obtener su corres-
pondiente mayúsula. En este caso
tratamosal byte como si fuese un nú-
mero binario pero se hace consciente-
mente de que lo que manejamos es
un código ASCII y la operación se
realiza para obtener otro código AS-
CII.
Por último y una vez convertida a
mayúscula, se llega a la parte de im-
presión que es donde se va desde los
dos saltos incondicionales anteriores.
Aquí se vuelve a recurrir a la rutina
CHPUT que vimo antes. Después de
esto se comprueba, como antes, si
es el carácter de terminación (el pun-
to, aunque puede ser cualquier otro
cambiando ese dato) y volviendo al
principio si no lo es.
En este programa se utilizan algu-
nas instrucciones nuevas. Las dos
primeras son 'JR C y 'JR NC\ que
realizan saltos incondicionales del
mismo modo que el 'JR NZ' que ya
hemos usado, pero comprobando la
bandera de acarreo y saltado si está
a uno u otro cero respectivamente.
Los códigos de operación correspo-
dientes so '38h' (56) para 'JR C y
'30h' (48) para 'JR NC\ Ambas de-
ben ir seguidas del desplazamiento
que sumado al contador del progra-
ma nos de la siguiente dirección de
ejecución.
La otra instrucción nuev^ que va-
mos a usar es la de restar. Esta tiene
un formato y manejo similar a las de
sumar pero restando el número indi-
cado del que está en el acumulador.
Al igual que con la suma puede ha-
ber resta con o sin bit de acarreo,
pero ahora consideraremos sólo la
que no lo usa. El nombre de la ins-
trucción es 'SUB' y el código cuando
se realiza con direccionamiento in-
mediato es 'D6h' (214) que debe ir
seguido del byte a restar.
En la figura 5 se da el listado en
ensamblador del programa y al lado
se ha metido un 'pseudo listado' en
BASIC en el que se pueden ver las
instrucciones equivalentes. Aunque
este listado funciona si se introduce
en el ordenador, su finalidad es ver,
paso a paso, lo que hace la rutina
comparándola con un lenguaje más
conocido como es el BASIC.
En la figura 6 se vuelve a dar el
listado en ensamblador pero acom-
pañado esta vez por los códigos de-
cimales y hexadecimales.
Resumen del capítulo
Este mes hemos visto como se
pueden realizar comparaciones y sal-
tos condicinales en base a estas
comparaciones. Como llamar a su-
brutinas y como restar dos bytes. Así
mismo se ha visto el código ASCII y
su funcionamiento por medio de dos
programas que hacían eco del tecla-
do a la pantalla. Aquellos lectores
que crean interesante convertir su or-
denador en ua máquina de escribir
de verdad y posean impresora, pue-
den modificar rápidamente el primer
programa sustituyendo la dirección
de salto de impresión por '00A5h\
que es la dirección para sacar el ca-
rácter por impresora, en lugar de por
pantalla. También les convendría el
carácter de determinación (el punto)
por algún otro, esto lo dejamos a su
libre elección.
Femando García
MSX 63
A estas alturas, ya estaréis familiarizados con el
singular personaje que aparece en los monentos
claves (y no tan clave) de la revista. Se trata
de nuestra mascota BUSY, de todos modos,
será él quién se presente.
Nos acompañará a lo largo de todos los
números de MSX, donde le veremos en artículos,
programas, etc, siempre se cuela justo a tiempo
para vosotros le tengáis en cuenta.
Nuestro simpático amigo, que es muy inteligente,
procurará hacer que la revista sea agradable e
interesante de ver.
Además, como es muy coqueto, ya está
pensando en regalar algo a quién mejor le
dibuje. Claro que, como es muy exigente quiere
que se realice con un programa.
¡WOIA!. LOS CHICOS Oí LA MSX M£ HAN DICHO $06 ME VISTA 06
£t/<W£ta y na ftese^TB yo mismo, toes ME IlAHo ¿Ü5/,CM
7BJ&0 OOi AjJoS, soy toiJEto, C/ajco OloPUtiAS ¿tí CADA *J&, Y UNAS
añteñas de oeucxm t£xtv&\. e L pifo ¡¡tupe vjyo es oñ poco Pectletío.
1 cm 1 h«bikbltS.y~
(te 5QgflT)
ft¿ ENCAMA LA ItíFódMATtCA Y sjoófe JOPO M&MMA.Q cotí Ló$ MSX.
sjg***S mnejofiA, otíiüAü pe OiScoiy IM&ACES, SOrTWMe cAAntÚAO...
HO lHT£RtmM& 6UAPETE
Qo5 cil£RNáS.^)
B\ je*jo ya syen flWPí £W~X¿)
EL 6VAÍM ML VA A\Z C fST/WOi "
<1K¿t PíMH LA CóHPoSlOfíA
64 MSX
INHIBIR LA TECLA
DE STOP
Si bien el BASIC de Microsoft,
contempla la posibilidad de inhi-
bir las interrupciones durante la
ejecución de los programas en
BASIC, mediante la bifurcación
ON STOP para la protección de
programas, no hay modo de con-
seguir inhibir la tecla STOP, que
si bien es útil en ciertos casos,
no deja de ser molesta, a mi en-
tender, en la mayoría de ellos.
Seguramente, para su anula-
ción, deberá recurrir a algún tipo
de rutina en código máquina o
bien cambiar algunos valores de
la RAM del sistema, pero ante la
posibilidad de conocer esta últi-
ma, les agradecería me solucio-
nasen el problema.
Por último, les gradecería, me
informasen también de si existe
algún modo de almacenar pro-
gramas en cinta con auto ejecu-
ción.
Xavier Casajuana Mogas
Granollers
Si desea desabilitar la tecla STOP
solamente, no le quedará más reme-
dio que modificar la rutina de lectura
del teclado del sistema, tarea imposi-
ble de realizar, a menos de que se
tenga un buen conocimiento del fun-
cionamiento de este.
Respecto a la autoejecución de los
programas en cassette, la única for-
ma que conocemos es grabándo el
programa en la instrucción:
- SAVE "CAS: nombre "
y cargarlo mediante la instrucción:
- LOAD "CAS: nombre ". r
La r al final indica al ordenador que
ejecute (run) el programa en cuanto
finalice su carga.
LISTADOS ERRONEOS
La presente es para comuni-
carles mi profunda decepción
cuando al introducir los progra-
mas del primer número de su re-
Jg MICROINFORMATICA DE CARTAGENA, S.A.
MlCSA Principe de Asturias, 20. bajo Tlf 529839 Cartagena
I GoldStar
TODO UN MSX DE 64 K
INCLUYE:
• TARJETA 6 MESES GARANTIA
• MANUAL USUARIO Y GUIA BASIC MSX
EN CASTELLANO
• CINTA DEMO
• CINTA JUEGO.
IMPORTADO POR:
MICROINFORMATICA DE CARTAGENA, S.A.
• GRAN CANTIDAD DE PROGRAMAS MSX DE IMPORTACION
AHORA, POSEER UN ORDENADOR CON TODAS LAS
VENTAJAS DEL SISTEMA MSX Y ALGUNOS DETALLES
QUE NO TIENEN OTROS MSX ¡NO CUESTA MAS!
PREGUNTE SU PRECIO EN CUALQUIER DISTRIBUIDOR
MICSA ¡SE ASOMBRARA!
IMPORTADORES. DISTRIBUIMOS COMO MAYORISTAS A TODO EL TERRITORIO NACIONAL
SOLICITENOS INFORMACION
PARTICULARES, SOLICITEN CATALOGO Y PRECIOS SIN COMPROMISO 6 PREGUNTENOS POR SU PROVEEDOR MAS CERCANO
DIRIGIRSE A:
MICROINFORMATICA DE CARTAGENA, S.A.
C Príncipe Asturias. 20 Bs)o CARTAGENA. Telf.: 968-52 98 39
MSX 65
vista en mi ordenador, éste me
respondía con mensajes de error,
en casi todas las líneas.
Me gustaría que me explicara
la causa de estos errores que
considero muy graves en una re-
vista con sus pretensiones.
Julio Antonio Pérez Morilla
Granada
Es difícil comprender que ningún
listado de los publicados en la revis-
ta, haya funcionado correctamente.
Además en tu carta, no especificas
ni el programa que te falló, ni la línea
en que se cometió el presumible
error.
Los programas publicados se han
probado en los ordenadores mencio-
nados en la anterior respuesta, por lo
que nos parece difícil entender se-
mejantes fallos. Todos se han com-
probado, más de una vez y por más
de una persona.
MSX CON EL CHIP Z800
He leído en vuestra revista que
se esperan los nuevos modelos
MSX con un procesador Z800 de
16 bits y un chip de gráficos tipo
9229. Me gustaría saber si van a
tardar en salir y cuando aparece-
rán en el mercado español.
Fidel Recio González
Madrid
La segunda generación de orde-
nadores MSX ya se ha presentado
en Japón. Las mejoras son, como ya
(oüJ i\rii ui l
Gn) fliCRO
ULTIMAS NOVEDADES EN
MSX (incluido SANYO con lápiz óptico)
AMSTRAD
DRAGON
COMMODORE, etc.
iiSANYO PC, y COMMODORE PC !!
REINA. 31 (JUNTO A GRAN VIA)
28004 MADRID. Tel. 232 70 88
apuntas, mayor potencia a todos los
niveles, pero sobretodo un chip de
video que permite controlar 1 28K de
video. Por el momento y debido al
retraso exsitente en la creación del
chip Z800, parece ser que la genera-
ción de ordenadores MSX con pro-
cesadores de 16 bits, todavía anda
algo lejos. Desde luego, la ¡dea de
los japoneses es realizar versiones
más potentes de este estándar, lo
que redundará en beneficio de todos
los usuarios de estos ordenadores o
de los que van a comprar uno, ya
que la compatibilidad se va a mante-
ner.
De aparecer en el mercado espa-
ñol, esto sería imprescindible, ya que
igual al año que viene tenemos los
primeros ordenadores de la segunda
generación, como a finales de año.
No existe fecha concreta, pero hay
que tener en cuenta que en el mer-
cado español lleva un atraso de bas-
tantes años con respecto de los
avances tecnológicos de otros paí-
ses y más si se trata del Japón.
Si ellos ya están en la segunda ge-
neración, nosotros todavía estamos
empezando a recorrer el camino,
aunque tenemos la particularidad de
hacerlo a pasos de gigante.
En suma, la aparición de estos
nuevos ordenadores todavía está sin
aclarar.
DIRECTOR:
Juan Arencibia
COORDINADOR EDITORIAL:
Emiliano Juárez
REDACCION:
Fernando García, Santiago Gala,
Ricardo García. Teresa Aranda,
Francisco Mancera.
DISEÑO:
Ricardo Segura y Benito Gil
Editada por
PUBLINFORMATICA S.A.
PRESIDENTE:
Fernando Bolín
DIRECTOR EDITORIAL:
Norberto Gallego.
Administración
PUBLINFORMATICA
GERENTE DE CIRCULACION Y
VENTAS:
Luis Carrero.
PRODUCCION:
Miguel Onieva.
DIRECTOR DE MARKETING:
Antonio González.
SERVICIO AL CLIENTE:
Julia González.
Tel. 733 79 69
ADMINISTRACION:
Miguel Atance.
JEFE DE PUBLICIDAD:
Maria José Martin
DIRECCION Y REDACCION:
C/ Bravo Munllo. 377 5 o A
Tel 733 74 13
28020 MADRID
PUBLICIDAD Y
ADMINISTR ACCION:
C/ Bravo Murillo 377 3 o E
Tel 733 96 62-96
Publicidad en Madrid
Fernando Hernando
Publicidad en Barcelona
Olga Martorell
C/ Pelayo, 12
Tel. (93) 301 47 00 Ext 27-28.
08001 BARCELONA
Deposito Legal: M 16.755-1985
Impreso en Héroes S.A
C/ Torrelara, 8. 28016-MADRID
Distribuye
S G.E.L. Avda. Valdelaparra s/n
Alcobendas (Madrid).
suscripciones
Rogamos dirí|a toda la
correspondencia relacionada con
suscripciones a
MSX
EDISA Tel. 415 97 12
C/López de Hoyos, 141 5 0
28002 MADRID
(Para todos los pagos reseñar
solamente MSX)
Para la compra de ejemplares
atrasados diríjanse a la propia
editorial
MSX
C/Bravo Munllo. 377 5 ° A
Tel 733 74 1 3 28020 MADRID
S deseas colaborar en MSX remite tus
artículos o programas a Bravo Munllo
377, 5 0 A 28020 Madnd Los programas
deberán estar grabados en cassette y ios
artículos mecanograliados
A efectos de remuneración se analiza
cada colaboración aisladamente. e«tu
diando su complejidad y calidad
Programas Sony para ordenadores MSX
Aborden.
¿? $ £ $ $ .<$ £
M ° nke y Países Países Computador Computer TheSnowman Cubit Character
Academy delMundo-1 delMundo-2 Adivino Billiards Collection
Stop the express Hustler (Billar Data cartridge Quinielas y HomeWriter Sparkie Aprendiendo Binarybnd
(Para el Tren) Americano) Reducciones inglés- 1
tlÍL tú íf £?¿$
Creative Aprendiendo Antartic Mastermind Contabilidad Athletic Land E.l. Ficheros
Greetings lnglés-2 Adventure Personal
f? t? Si ú ú if ú $
El Ahorcado Dorodon La Pulga Cosmos Control BattleCross Mouser Crazy Train
de Stocks
Alibaba Juno First Carjamboree Tutor Trackand Blackjack Trackand DrillerTanks
Field-1 Field-2 (Tanque
(olimpiadas) (olimpiadas) Destructor)
Y muchos
más títulos
Sonygraph Ninja Les Flics
(El Samurai)
Ordenador Doméstico
HIT 3¡T
Para lo que guste ordenar
Ü GoldStar MSX
MEMORIA RAM DE USUA-
RIO: Una potente memoria
de 64K le dará la fuerza
necesaria para ejecutar los
mejores programas del
mercado
CONECTORES DE EX-
PANSION: Aseguran la co-
nexión a gran cantidad de
periféricos como impreso-
ras, diskettes y joysticks
ROM y VIDEO ROM: Per-
miten al Goldstar ejecutar y
trabajar con potentes pro-
gramas de gráficos sin te-
ner que utilizar la memoria
RAM
En el PORT DE CARTU-
CHOS podrá conectar to-
dos los programas MSX
existentes, simplemente in-
troduciendo el cartucho
— jolvidese de esas compli-
cadas cintas!
La FUENTE DE ALIMEN-
TACION está incorporada
al ordenador, de manera
que no tendrá que manejar
ni ocultar transformador
alguno
EL TECLADO es del tipo
QWERTY, con la incorpo-
ración de teclas de función
y del control del cursor.
EL SONIDO es una de las
mejores características del
Goldstar —con 5 octavas y
un sin fin de tonos increí-
bles.
¡¡49.500 ptsJ!